<html> <head> <title>文件上传</title> </head> <body> <form name="form1" method="post" action="uploadForm2.php"> <p>请输入你要同时上传的文件的数目,最大值是9</p> <p> <input name="uploadNeed" type="text" id="uploadNeed" maxlength="1"> </p> <p> <input type="submit" name="Submit" value="Submit"> </p> </form> </body> </html> |
<html> <head> <title>文件上传</title> </head> <body> <form name="form1" enctype="multipart/form-data" method="post" action="processFiles.php"> <?php // 创建动态表单 $uploadNeed = $_POST[@#uploadNeed@#]; for($x=0;$x<$uploadNeed;$x++){ ?> <input name="uploadFile<?php echo $x;?>" type="file" id="uploadFile<?php echo $x;?>"> <?php // 完成循环 } ?> <input name="uploadNeed" type="hidden" value="<?php echo $uploadNeed;?>"> <input type="submit" name="Submit" value="Submit"> </form> </body> </html> |
在这个页面里,我只是创建了一个带有“type”属性的HTML表单。在表单中间,我插入了一段PHP代码来完成循环。我把$x设为0并且把循环次数设为所需要的值$uploadNeed(就是刚才用户提交的那个值)。我还把$uploadNeed的值输出到hidden域里,以便它能传递到最后的一个页面。
作这些工作的目的是为了把$x这个变量的值,加在“name”属性的值“uploadFile”的后面。这样每个“name”属性的值“uploadFile”的后面都会有一个不同的数字来区别第一个文件。
现在就来完成上传文件的最后一步 processFiles.php
<?php $uploadNeed = $_POST[@#uploadNeed@#]; // 开始循环 for($x=0;$x<$uploadNeed;$x++){ $file_name = $_FILES[@#uploadFile@#. $x][@#name@#]; // 去除文件名中的特殊字符 $file_name = stripslashes($file_name); $file_name = str_replace("@#","",$file_name); $copy = copy($_FILES[@#uploadFile@#. $x][@#tmp_name@#],$file_name); // 检查是否复制成功 if($copy){ echo "$file_name 上传成功<br />"; }else{ echo "$file_name 上传失败<br />"; } } // 结束循环 ?> |