如何在JavaScript中将文件对象添加到文件列表集合?
我正在处理一个拖放文件上传字段 我能够返回包含用户指定的文件的FileList对象。我有一个隐藏的文件输入字段,然后我想将文件对象添加到其中,这样我就可以通过AJAX发送表单数据 我遇到的问题是,我似乎无法将文件对象复制到文件输入字段。以下是我如何尝试的:如何在JavaScript中将文件对象添加到文件列表集合?,javascript,file-upload,drag-and-drop,filelist,Javascript,File Upload,Drag And Drop,Filelist,我正在处理一个拖放文件上传字段 我能够返回包含用户指定的文件的FileList对象。我有一个隐藏的文件输入字段,然后我想将文件对象添加到其中,这样我就可以通过AJAX发送表单数据 我遇到的问题是,我似乎无法将文件对象复制到文件输入字段。以下是我如何尝试的: var files = evt.dataTransfer.files; // FileList object. var fileUploadElem = document.getElementById(fileUploadId); // t
var files = evt.dataTransfer.files; // FileList object.
var fileUploadElem = document.getElementById(fileUploadId);
// trying to copy the first file of files into the file upload field
fileUploadElem.files[0] = files[0];
// this statement returns '0' instead of '1'
console.log('fileUploadElem length: '+fileUploadElem.files.length);
感谢您的建议和指点。这是一个关于如何使用FormData的示例:
function sendForm() {
var output = document.getElementById("output");
var data = new FormData(document.getElementById("fileinfo"));
data.append("CustomField", "This is some extra data");
var xhr = new XMLHttpRequest();
xhr.open("POST", "stash.pl", false)
xhr.send(data);
if (xhr.status == 200) {
output.innerHTML += "Uploaded!<br />";
} else {
output.innerHTML += "Error " + xhr.status + " occurred uploading your file.<br />";
}
}
函数sendForm(){
var output=document.getElementById(“输出”);
var data=newformdata(document.getElementById(“fileinfo”);
data.append(“CustomField”,“这是一些额外的数据”);
var xhr=new XMLHttpRequest();
xhr.open(“POST”、“stash.pl”、false)
发送(数据);
如果(xhr.status==200){
output.innerHTML+=“上传!
”;
}否则{
output.innerHTML+=“错误”+xhr.status+“上载文件时出错。
”;
}
}
它对我不起作用的原因是Chrome不支持其中一个JavaScript属性,因此它在我同事的机器上起作用,他在Firefox浏览器中工作,但不为我工作。我认为你不能这样做,使用FormData对象,然后用ajax发送它。