FileReader-Fehler: Das Objekt ist bereits damit beschäftigt, Blobs zu lesen
Lesezeit: 2 Minuten
Ich erstelle ein Drag-and-Drop-Datei-Upload-System für das Hochladen von Fotogalerien. Dies ist mein Quellcode, der abgelegte Dateien behandelt. Dieser funktioniert mit mehreren Dateien, wenn ich sie einzeln ablege, funktioniert es, aber wenn ich mehr als eine gleichzeitig ablege, tritt dieser Fehler auf:
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);
});
}
Irgendwelche Ideen?
du musst anrufen FileReader.abort() nachdem Sie jeden behandelt haben onLoad
– F F F
5. Juni 2018 um 23:40 Uhr
Ich denke, der Fehler ist Ihnen bereits gegeben.
Fehler beim Ausführen von „readAsDataURL“ auf „FileReader“: Das Objekt ist bereits damit beschäftigt, Blobs zu lesen
Der Dateileser ist also schon beschäftigt, aber nur, wenn Sie mehrere Dateien ablegen? Dann ist es wahrscheinlich mit der ersten Datei beschäftigt (und die zweite stürzt ab).
Wenn Sie setzen var reader = new FileReader(); In Ihrer jQuery-Schleife funktioniert es wie folgt:
$.each(files, function(i, j)
{
var reader = new FileReader();
$("td.photos span.status").html("Processing file: "+j.name);
formdata.append('file', j);
.... <snip>
}
Nett! Schön, dass es geholfen hat und danke, dass du es uns mitgeteilt hast!
– Dick van den Brink
20. Juli 2014 um 3:15 Uhr
Ein Fall, der dies verursachen kann, ist, wenn ein Dateireader zweimal aufgerufen wird. Wenn es noch läuft, wird dieser Fehler ausgegeben.
Sie können versuchen, das FileReader-Objekt neu zu initialisieren.
<script type="text/javascript">
debugger;
////////////////Write-1/////////////////////////
var blob = new Blob([], {type: "text/plain"});
for (var i=0; i<10; i++)
{
blob = new Blob([blob," "+i], {type: "text/plain"});
}
/////////////////Write-2//////////////////////////
var parts = [];
for (var i = 11; i < 20; i++)
{
parts.push(" " + i);
}
var blob1 = new Blob(parts);
//////////////////Read-1////////////////////////////
var def = new FileReader();
def.addEventListener("loadend", function(e) { var x = e.srcElement.result; alert(x); });
def.readAsText( blob );
///////////////////Read-2///////////////////////////////
def = new FileReader();
def.addEventListener("loadend", function(e) { var x = e.srcElement.result; alert(x); });
def.readAsText( blob );
/////////////////////////////////////////////////
</script>
14314400cookie-checkFileReader-Fehler: Das Objekt ist bereits damit beschäftigt, Blobs zu lesenyes
du musst anrufen
FileReader.abort()
nachdem Sie jeden behandelt habenonLoad
– F F F
5. Juni 2018 um 23:40 Uhr