Aus der Antwort des David Jones, schrieb ich diese Methode. Die try/catch behandelt die readAsBinaryString Ausnahme in IE10/11 und nennen sich die "IE-Modus":
function readBinaryStringFromBlob(blob, callback, ie) {
var reader = new FileReader();
if(!ie) {
reader.addEventListener("loadend", function() {
callback(reader.result);
});
try {
reader.readAsBinaryString(blob);
} catch (err) {
readBinaryStringFromBlob(blob, callback, true);
}
} else {
reader.addEventListener("loadend", function() {
var binary = "";
var bytes = new Uint8Array(reader.result);
var length = bytes.byteLength;
for (var i = 0; i < length; i++) {
binary += String.fromCharCode(bytes[i]);
}
callback(binary);
});
reader.readAsArrayBuffer(blob);
}
}
Vielen Dank, David. Ich habe versucht, diesen Code einzugeben und bekam einen Fehler, 'ReferenceError: UInt8Array ist nicht definiert'. Nach einer Weile wurde mir klar, dass der Typ "Uint8Array" statt "UInt8Array" kontraintuitiv heißt - beachte das Kleinbuchstabe "i". Schlechter Entwickler! So traurig! – Suncat2000