Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中将文件对象添加到文件列表集合?_Javascript_File Upload_Drag And Drop_Filelist - Fatal编程技术网

如何在JavaScript中将文件对象添加到文件列表集合?

如何在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

我正在处理一个拖放文件上传字段

我能够返回包含用户指定的文件的FileList对象。我有一个隐藏的文件输入字段,然后我想将文件对象添加到其中,这样我就可以通过AJAX发送表单数据

我遇到的问题是,我似乎无法将文件对象复制到文件输入字段。以下是我如何尝试的:

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发送它。