我最近拼凑了一些代码,允许通过jquery将拖放文件上传到我的服务器。现在我尝试添加一个带有文件选择输入的表单以使用相同的代码。问题是,我似乎无法将文件选择输入读入兼容对象。
我的拖放代码基本上有下载:
var files = e.originalEvent.dataTransfer.files;
然后我将“files”变量提供给另一个函数来处理jquery / ajax上传。
当试图让文件输入选择以类似的方式工作时,我试试这段代码,但没有运气:
var files = new FormData();
files.append("file", $("#fileselect")[0].files[0]);
<input type="file" id="fileselect"></input>
但是当我将这个“files”变量提供给现有函数时,我无法读取如下属性:
console.log("file length: " + files.length);
有关向我指明方向的任何提示吗?非常感谢。
答案 0 :(得分:0)
我找不到一种方法来完全实现相同的格式,但由于后来的函数只是将数据分配给FormData对象,我复制了该函数并对其进行了调整,因此我可以将从表单输入中提取的数据转换为在继续我的其余代码之前的FormData对象,然后我可以在将它转换为FormData对象之前以略微不同的语法读取各种属性并按照正常情况继续:
var file = $("#fileselect")[0].files[0]; //read from file input
var filename = file.name;
var filesize = file.size; //in bytes
var fd = new FormData();
fd.append('file', file);