FileReader错误:对象已经忙于读取Blob

我正在为照片库上传制作拖放式文件上传系统。 这是我处理丢弃文件的源代码。 这个工作多个文件,如果我逐个删除它,但当我同时丢弃多个文件时会发生此错误:

Uncaught InvalidStateError: Failed to execute 'readAsDataURL' on 'FileReader': The object is already busy reading Blobs.

 function handleFiles(files) { var reader = new FileReader(); var formdata = new FormData(); $.each(files, function(i, j) { $("td.photos span.status").html("Processing file: "+j.name); formdata.append('file', j); $.ajax({ url: "uploadalbum.php", type: "POST", dataType: "json", data: formdata, processData: false, contentType: false, success: uploadfinished }); reader.onload = handleReaderLoad; reader.readAsDataURL(j); }); } 

有任何想法吗?

我认为错误已经给你了。

无法在’FileReader’上执行’readAsDataURL’:对象已经忙于读取Blob

所以文件阅读器已经很忙但只有当你删除多个文件时? 然后它可能忙于第一个文件(和第二个崩溃)。

当你把var reader = new FileReader(); 在你的jQuery每个循环中它将如下工作:

 $.each(files, function(i, j) { var reader = new FileReader(); $("td.photos span.status").html("Processing file: "+j.name); formdata.append('file', j); ....  } 

导致这种情况的一种情况是文件阅读器被调用两次。 如果它仍在运行,它将发出此错误。

  reader.onload = function( event ) { // do stuff }; reader.readAsDataURL( file ); /* arbitrarily complex code */ reader.readAsDataURL( file2 ); /* oops */