【发布时间】:2016-03-16 21:48:09
【问题描述】:
我正在尝试开发一个在表单上发布附件和其他字段的网页。综上所述,我的页面应该具备以下特点:
- 用户可以查看他们要上传的文件(无需进行实际上传)
- 根据需要删除
- 只有当用户点击时才上传到服务器
我在 Internet 上进行了研究,发现了这篇关于 File API 的有用文章 File API with HTML5,并且我设法使它工作。所有选定的文件都上传到服务器。但我想稍微改进一下。
我不想立即将它们上传到服务器。我希望用户在提交之前查看并仅在点击“立即上传所有文件”时上传。
问题是当用户单击“立即上传所有文件”按钮时,我不知道如何循环所有选定的文件。我无法重新访问用户已经选择的所有文件。
在示例中,所有文件都来自 evt.dataTransfer.files。但是当我单击按钮时它是未定义的。由于我的代码与示例中的代码几乎完全相同,我将只发布重要的部分。
dropArea.addEventListener("drop", function (evt) {
traverseFiles(evt.dataTransfer.files);
this.className = "";
evt.preventDefault();
evt.stopPropagation();
}, false);
$('#btnUploadAll').click(function (evt) {
for (x in evt.dataTransfer.files) {
var file = filesToUpload[x];
//do the upload script to server.
//xxxxxxxxxxxxxxxxxxxx
}
});
我的问题是,当用户单击“立即上传所有文件”按钮时,我如何才能访问预先选择的文件?
【问题讨论】:
-
使用 change() 而不是 click() 并以
evt.target.files访问文件
标签: javascript html file-upload fileapi