我正在尝试通过拖放实现原生 HTML5 多个文件上传。我一直在关注 http://onehub.com/blog/posts/designing-an-html5-drag-drop-file-uploader-using-sinatra-and-jquery-part-1/ 和 http:// www.html5rocks.com/en/tutorials/file/dndfiles/ 但我仍然没有找到我需要的解决方案。
基本上,我想模拟 HTML5 多文件上传输入元素的功能,但是在女巫上使用 div 来监听放置事件。
换句话说,我想制作一个像这样的表格:
<form method="post" action="somesscript.php" enctype="multipart/form-data">
<input type="text" />
<div class="drop">
<p>Drop files here</p>
</div>
<input type="submit" />
</form>
像这样工作:
<form method="post" action="somesscript.php" enctype="multipart/form-data">
<input type="text" />
<input name="filesToUpload[]" type="file" multiple />
<input type="submit" />
</form>
拖放字段应被视为表单的一部分,当提交表单时,我只想将输入中的所有数据以及拖放字段中的文件数组通过 AJAX 发送到服务器。
到目前为止,我只实现了在 drop 事件上读取文件名。我希望将所有删除的文件添加到一个数组中,但我不知道如何访问文件本身,而不是它们的属性,以便后者我可以通过 AJAX 将这个文件数组与其余的一起发送到表单提交中表格数据。
我想要类似的东西:
var data = e.originalEvent.dataTransfer,
files = data.files,
filesArray = [],
filesLength = files.length,
i;
for ( i = 0; i < filesLength; i++ ) {
var file = files[i];
filesArray.push(file);
}
return filesArray;
另外,我知道有这方面的插件,但我想在本地做。