首页 > php教程 > php手册 > 正文

上传多个文件的PHP脚本

php中文网
发布: 2016-05-22 17:21:20
原创
1372人浏览过

译者注:本文的原名是《creating a multi-file upload script in php》。我个个觉得这文章写得一般,代码也不是非常专业,但是它比较短,而且一时间也找不到好一点的文章,就把这个译过来了。其实php手册里也有一节是说多文件上传的,大家可以对比对比。文章内有的字句译出来不太顺眼,所以按照原意作了一定量的修改。本人水平有限,还望各位高手多指点。  


导言 


  作为一个PHP的程序员,我曾遇到过这么一个客户,他需要一个可以同时上传多个文件的表单。因此,一天夜里我就用了一个小时的时间,找到了最好最简单的方法来完成这个要求。在这篇教程里,“for”这个循环语句,将会成为核心代码。 

立即学习PHP免费学习笔记(深入)”;


脚本1:让用户设定需要上传的文件数目 


uploadForm1.php 


<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代码非常简单。在这段代码里,我把uploadNeed这个组件的maxlength属性设为1,那么用户所能输入的最大值就是9了。当然,你可以根据需要自行修改这部份。 


脚本2:创建动态表单 


  好了,做好下面的这个页面以后,我们就完成全部工作的一半了。我们用for循环语句来完成这个任务。 


uploadForm2.php 


<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”的后面都会有一个不同的数字来区别第一个文件。 


脚本3:处理上传文件 

Kimi智能助手
Kimi智能助手

超强AI写作助手,一键总结20w字长文,支持批量文档上传,多端同步内容不怕丢失。论文综述、文档速读、脚本小说创作,统统交给Kimi!实时联网搜索,给你最智能清晰的解答。

Kimi智能助手 1671
查看详情 Kimi智能助手


现在就来完成上传文件的最后一步 


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数据库中  

获取文件的大小并保存到数据库中  

创建一个临时文件保存上传失败的文件的文件名,并在程序执行完以后再试尝试  

添加批量删除文件的功能


文章地址:

转载随意^^请带上本文地址!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号