在<input type =“file”multiple =“”/>中为每个文件创建FormData实例

时间:2016-10-23 18:59:54

标签: javascript dom input

我尝试使用带有multiple属性的输入文件并将formData拆分,因此我会为多个文件元素中的每个文件设置一个formData isnatce。

HTML

<input type="file" name="file" multiple></label>

JS

new FormData(formElement) // <--- Need to have this for each file selected

我需要这个,因为我使用的是Cloudinary API,他们一次只接受一个文件,所以我需要发送多个Ajax请求,对于每个文件,每个文件需要formData个实例选中,但问题是,FormData接受form元素的参数作为参数,我无法将文件分开。

DEMO PAGE

2 个答案:

答案 0 :(得分:3)

您可以使用$.when()$.map()File <input type="file">的每个FileList附加到新FormData个实例,然后调用{{1}每个$.ajax()个实例。

注意,FormData()事件属性替换为.on()。在onsubmit {required {.value {{}} {{{}}} name="cloud_name" name="upload_preset" <input type="text"> .value元素{1}}事件发生。

form

plnkr http://plnkr.co/edit/7l0obsusqXVlommdd49L?p=preview

答案 1 :(得分:2)

每次创建formData对象时,都可以向其附加数据:

data.append("file", document.getElementById(file).files[0]);

但是在for循环中代替0,你可以放置循环索引并将数据发送到ajax。

您应该按照以下方式初始化数据:

 var data = new FormData();