如何在JavaScript中将File对象添加到FileList集合?

时间:2014-06-11 16:16:38

标签: javascript file-upload drag-and-drop filelist

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

我能够返回一个包含用户指定文件的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);

欣赏任何建议或指示。

2 个答案:

答案 0 :(得分:1)

这是MDN关于如何使用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 />";
  }
}

答案 1 :(得分:0)

它对我不起作用的原因是因为Chrome中不支持其中一个JavaScript属性,因此它在我的同事的机器上运行,该机器在Firefox浏览器中工作但不适合我。