
已解决问题
谷歌lixu334用户在2016.04.19提交了关于“北京上传多个文件的Ph**P脚本”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-02-26T03:50:46。希望大家能够帮助她。详细问题描述及疑问:期待您的答案,谢谢你帮我,祝你快乐,愿你事事如意 !
详细问题描述及疑问:期待您的答案,谢谢你帮我,祝你快乐,愿你事事如意 !
译者注:本文的原名是《
导言
作为一个Ph**P的
脚本1:让用户设定需要
uploadForm1.php
<html>
<head>
<title>文件上传</title>
</head>
<body>
<formname="
<p>请输入
<p>
<inputname="uploadNeed"type="text"id=
</p>
<p>
<inputtype="submit"name="Submit"value="Submit">
</p>
</form>
</body>
</html>
上面的h**TML代码非常简单。在这段代码里,我把uplo
脚
好了,做好下面的这个页面以后,我们就完成全部工作的一半了。我们用
uploadForm
<ht
<head>
<title>文件上传</title>
</head>
<body>
<formname="form1"enctype="multipa
<?php
//创建动态表单
$upl
for($x=0;$x<$uploadNeed;$x++){
?>
<i
<?php
//完成循环
}
?>
<inputname="uploadNeed"type="hidden"value="<?phpecho$uploadNeed;?>">
<inputtype="submit"name="Submit"value="Submit">
</form>
</body>
</html>
在这个页面里,我只是创建了一个带有“type”属性的h**TML表单。在表单中间,我插入了一段Ph**P代码来完成循环。我把$x设为0并且把循环次数设为所需要的值$uploadNeed(就是刚才用户提交的那个值)。我还把$uploadNeed的值输出到hidden域里,以便它能传递到最后的一个页面。
作这些工作的目的是为了把$x这个变量的值,加在“name”属性的值“uploadFile”的后面。这样每个“name”属性的值“uploadFile”的后面都会有一个不同的数字来区别第一个文件。
脚本3:处理上传文件
现在就来完成上传文件的最后一步
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/>";
}
}//结束循环
?>
在这个脚本里,我们首先要从uploadForm2.php中获取$uploadNeed这个变量。和前页那个页面一样,我们用“for”语句来还创建循环。不同的时,我们需要在循环内使用预定义全局变量$_FILES,我把它传递给了$file_name这个变量。
下一步,我们调用了stripslashes和str_replace两个函数来处理。由于文件名内可能包含一些特殊字符,所以我们使用stripslashes函数来防止上传时出现解释错误。
注意我是如何添加$x这个变量的,在$_FILES里$x会变成数字。这样程序就会知道得处理哪个文件了。
当我们使用copy函数时,才真正的开始把上传的文件复制到指定目前内。最后还加上了一段简单的代码来判断复制是否成功,并把结果输出到屏幕上。
结束语
我肯定这个小小的脚本会使你一次上传多个文件的工作变得更方便。你可以根据下列的提示,在这个脚本内加入相关的代码来完善它。
把文件名保存在MySQL**库中
获取文件的大小并保存到**库中
创建一个临时文件保存上传失败的文件的文件名,并在程序执行完以后再试尝试
添加批量删除文件的功能