我正在开发一个网络上传器,但是,我发现了一些东西,我不知道这是否是一个问题。这是我发现的:
当我选择文件时<input type="file" multiple>
,所有选定文件的值都存储在 INPUT 内的文件列表中。但是,当我添加更多文件时,我选择的文件将替换我之前选择的文件。我认为这是该元素 DOM 的默认行为。
如果我想添加更多文件而不删除之前选择的文件,该怎么办?
有谁知道如何做到这一点?
顺便说一句:抱歉我的英语不好,这不是我的母语。谢谢。
您可以跟踪所有FileList
s,并在通过 ajax 发送时循环遍历每个:http://jsfiddle.net/46Pk8/ 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);
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)