От ответа Дэвида Джонса, я написал этот метод. Попытка/задвижка обрабатывает исключение readAsBinaryString в IE10/11, и называют себя "режим IE":
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);
}
}
Спасибо, Дэвид. Я попытался ввести его в код и получил ошибку: 'ReferenceError: UInt8Array не определен'. Через мгновение я понял, что тип встречается интуитивно с именем 'Uint8Array' вместо' UInt8Array' - обратите внимание на нижний регистр «i». Плохой разработчик! Так грустно! – Suncat2000