すべてのを追跡し、FileList
ajaxを介して送信するときにそれぞれをループすることができます:http://jsfiddle.net/46Pk8/。ただし、この方法でファイルを複数回選択(およびアップロード)できることに注意してください。より良い方法は、視覚的なリストを用意し、ユーザーがリストにファイルを追加/リストからファイルを削除できるようにすることです。
var files = []; // this will contain FileLists
$("button:first").on("click", function(e) {
$("<input>").prop({
"type": "file",
"multiple": true
}).on("change", function(e) {
files.push(this.files);
}).trigger("click");
});
$("button:last").on("click", function(e) {
var xhr = new XMLHttpRequest();
xhr.open("POST", "/echo/html/", true);
var data = new FormData();
$.each(files, function() { // each FileList
$.each(this, function() { // each file inside this list
console.log("appending %s", this.name);
data.append("files", this);
});
});
xhr.onreadystatechange = function(e) {
if(xhr.readyState === 4) {
console.log("done");
}
};
xhr.send(data);
});