繁体   English   中英

从 Ajax 上传多个带有 FormData 的文件时,$_FILES 为空

[英]$_FILES empty when upload multiple files with FormData from Ajax

问题是,当我尝试上传单个文件时,服务器收到请求,我看到 $ _FILES 实际上包含上传的文件。

另一方面,当我尝试上传更多文件时,请求附带的 $_FILES 完全为空。

<input type="file" name="images[]" id="images-input-file" accept="image/jpeg" multiple="multiple" hidden />
//In this case '$(this)' is the file input
var files = $(this)[0].files;

//Append data to Form Data
var formData = new FormData();
for (var i = 0; i < files.length; i++) {
   formData.append("file-" + i, files[i]);
}

$.ajax({
   method: "POST",
   url: "/server/fnc/upload-images",
   data: formData,
   cache: false,
   processData: false,
   contentType: false,
   success: function(res) {
      console.log(res);
   },
});

也许最好的方法是使用这样的表单提交:

$("#uploadForm").on('submit',(function(e) {
    e.preventDefault();
    $.ajax({
        type: "POST",
        url: "/server/fnc/upload-images",
        data:  new FormData(this),
        contentType: false,
        processData: false,
        success: function(res){
            console.log(res);
        }           
    });
}));

否则你可以试试这个来测试:

var formData = new FormData();
$.each($("input[type='file']")[0].files, function(i, file) {
    formData.append('file', file);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM