javascript - JS :How to send multiple files using FormData(jQuery Ajax)

标签 javascript jquery multipartform-data

在我的表单中有多个文件上传,使用 FormData 只有一个文件正在上传,虽然我选择了多个文件上传,代码如下

HTML

<form name="uploadImages" method="post" enctype="multipart/form-data">
<input type="file" name="photo[]" value="">
<input type="file" name="photo[]" value="">
<input type="file" name="photo[]" value="">
</form>

JS

     var ajaxData = new FormData();
     ajaxData.append( 'action','uploadImages');
     jQuery.each($("input[name^='photo']")[0].files, function(i, file) {
        ajaxData.append('photo['+i+']', file);
      });
     $.ajax({
        url: URL,
        data: ajaxData,
        cache: false,
        contentType: false,
        processData: false,
        type: 'POST',
        dataType:'json',
        success: function(data) {
            if (data.status == 'success') {
                location.reload();
            }
        }
       });

我在服务器上使用 PHP,使用 HTML 属性名称photo 只有我能够保存文件,动态文件名对我不起作用。

最佳答案

你在 javascript 中有一个错误:你只是在一个输入中迭代文件,请看一下这个

var ajaxData = new FormData();
ajaxData.append( 'action','uploadImages');
$.each($("input[type=file]"), function(i, obj) {
        $.each(obj.files,function(j, file){
            ajaxData.append('photo['+j+']', file);
        })
});

关于 jsfiddle 的示例

关于javascript - JS :How to send multiple files using FormData(jQuery Ajax),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16496407/

相关文章:

javascript - 使用javascript中的按钮单击添加多个文本框

javascript - 我正在尝试创建一个通过输入生日来输出年龄的函数。我没有从中得到输出。我做错了什么?

仅限 Javascript - 我提交了一个表单但没有任何反应

javascript - ccs3 属性背景大小 :cover mechanism

node.js - NodeJS : Stream. pipe(Stream) 有效但 Stream.read() 无效

ios - iOS 的 html5 文件上传问题

javascript - 关于 jQuery 源代码的问题 == on window

javascript - MouseOver 和 MouseLeave 上的随机文本显示真实文本

jquery - 使用 JQuery 通过 Ajax 以 Json 格式发送 Post 表单数据

Javascript:通过 Graph API 将图像从 Canvas 上传到 FB