javascript - 如何用FormData实现多文件上传
高洛峰
高洛峰 2017-04-11 11:34:35
[JavaScript讨论组]

我用FormData+jQuery实现AJAX无刷新上传,但是一次只能上传一个文件。
怎么弄实现一次性上传多张图片

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(3)
PHP中文网

可以用数组形式,我贴代码了
html 部分
<li class="list-group-item disabled select-file-p">

<input type="file" multiple="true" class="input-sm clear-l-r-padding select-file" data-uploadtype="photo"/>

</li>
js部分
var i,
data = new FormData();
...
for (i = 0; i < $('.select-file').files.length; i++) {

    data.append('file[]', this.files[i]);
 }

...//省略代码若干...在选择完成后调用下面$.ajax
$.ajax({

url: 'url'
type: "POST",
data: data,
dataType: 'json',
processData: false,// *重要,确认为false
contentType: false,
beforeSend: function () {
      ...  },
success: function (res) {
      console.log(res);

},

error: function (res) {
    ...}

});
php 部分 接收数组
$fileField='file';
$name = $_FILES$fileField;

  $tmp_name = $_FILES[$fileField]['tmp_name'];
  $size = $_FILES[$fileField]['size'];
  $error = $_FILES[$fileField]['error'];

/ 如果是多个文件上传则$file["name"]会是一个数组 /
if(is_Array($name)){
$errors=array();
/多个文件上传则循环处理 , 这个循环只有检查上传文件的作用,并没有真正上传 /
for($i = 0; $i < count($name); $i++){
/设置文件信息 /
if($this->setFiles($name[$i],$tmp_name[$i],$size[$i],$error[$i] )) {

if(!$this->checkFileSize() || !$this->checkFileType()){
  $errors[] = $this->getError();
  $return=false; 
}

}else{

$errors[] = $this->getError();
$return=false;

}
/ 如果有问题,则重新初使化属性 /
if(!$return)

$this->setFiles();

}

迷茫

参考localResizeIMG

伊谢尔伦

上传多个文件的时候,append 应该这样写

data.append('file[]', $('.select-file')[i].file[0]);

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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