如何用FormData实现多文件上传

发布于 2022-09-04 10:50:09 字数 67 浏览 17 评论 0

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

烟雨扶苏 2022-09-11 10:50:09

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

<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();

}

笑着哭最痛 2022-09-11 10:50:09

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文