我有一些html,其中一个区域用户可以拖放要上传的文件。嵌套在其中的是“浏览文件”按钮,clicks()
隐藏文件输入应该选择传统的上传方法。到目前为止一切运行良好,除了如果用户拖放多个文件(多个文件),它会上传每个文件两次(3个删除的文件上传6个文件)。如果用户通过浏览文件按钮上传,则不会执行此操作,因此我将其缩小到我的ondrop
功能并包含在下面。如果问题不在此代码块中,我可以发布其他代码。
更新:我在droppedfile
循环之前将变量for
记录到控制台一次,之后注意到在for循环后记录并删除了2个文件后,变量包含2个文件列表和每个列表包含两个文件(进行4次上传)。我的for
循环如何改变我的变量?
dropzone.ondrop = function(e){
e.preventDefault();
this.className = 'dropzone';
var droppedfile = e.target.files || e.dataTransfer.files;
for (i=0; i < droppedfile.length; i++) {
if(droppedfile[i].type != "text/plain" && droppedfile[i].type != "application/pdf" && droppedfile[i].type != "application/msword"){
alert(droppedfile[i].type + " file types are not allowed.");
}else{
uploadButton.innerHTML = 'Uploading...';
//calls a function that assigns the file to a new formdata obj and sends via ajax
upload(droppedfile);
}
}
}
答案 0 :(得分:1)
出现问题是因为每次执行for循环时都要上传这两个文件。 取代
CS
WITN
DS
或者您可以在上传
之前确保所有文件都有效upload(droppedfile);