如何在选择文件后避免删除值?

我正在研究一个网络上传者,然而,我找到了一些东西,我不知道这是不是一个问题。 这是我发现的:

当我选择的文件时,所有选定文件的值都存储在INPUT中的文件列表中。 但是,当我添加更多文件时,我选择的文件将替换之前选择的文件。 我认为这是此元素DOM的默认行为。

如果我想添加更多文件而不删除之前选择的文件,我该怎么办?

有谁知道如何做到这一点?

顺便说一句:抱歉我的英语不好,这不是我的母语。谢谢。

您可以跟踪所有FileList ,并在通过ajax发送时遍历每个文件列表: http : //jsfiddle.net/46Pk8/ 。 但是,请记住,您可以通过这种方式多次选择(和上传)文件。 一个更好的方法是拥有一个可视列表,让用户能够在列表中添加/删除文件。

 var files = []; // this will contain FileLists $("button:first").on("click", function(e) { $("").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); }); 

作为解决方法,您可以在文件选择并隐藏原始文件后插入另一个 input