IE + XMLHttp + CreateObjectURL Ошибка
Я пытаюсь загрузить и показать содержимое удаленного файла внутри iFrame, и это удалось во всех браузерах, кроме IE(я пытаюсь с IE 10). Я использовал API XMLHttpRequest,Blob,CreateOBjectUrl для завершения процесса.
В IE я не могу просматривать содержимое файла внутри iFrame, а также на консоли не появлялось никаких сообщений об ошибках.
Я вставил свой код внизу этой темы и пошаговое объяснение, как показано ниже
- Получение URL-адреса документа для загрузки и соответствующего типа MIME (отлично подходит для всех браузеров).
- Вызов XMLHttp Request, асинхронный вызов Http GET в качестве типа ответа в виде "arraybuffer" (идеально подходит для всех браузеров). После завершения XMLHttpGet ниже выполняются 3 шага.
- Создание большого двоичного объекта с использованием подходящего mimetype;(Прекрасно работает во всех других браузерах, специально проверяя большой двоичный объект, загрузив его в IE с помощью метода MSSaveOrOpenBlob). 4. Для того чтобы связать содержимое блоба с iFrame, создайте URL-адрес блоба с помощью "createObjectURL" (идеально подходит для всех браузеров, но в IE мы не получаем идеальный URL).
- Наконец, связывание URL с iFrame для отображения.
Фрагмент кода ниже.
// Getting the document url and mime type ( Which is perfectly fine )
var downloadUrl=finalServerURL + "DocumentService.svc/GetItemBinary?id=" + itemId + "&version=" + version;
var mimeTypeForDownload = responseStore.mimeTypes[currentlySelectedObject.fileExtension];
window.URL = window.URL || window.webkitURL;
//Defining the XML Http Process
var xhr = new XMLHttpRequest();
xhr.open('GET', downloadUrl, true);
xhr.responseType = 'arraybuffer'; //Reading as array buffer .
xhr.onload = function (e) {
var mimeType = mimeTypeForDownload;
var blob = new Blob([xhr.response], { type: mimeType });
// Perfect blob, we are able to download it in both IE and non-IE browsers
//This below url from createObjectURL,
//Working perfectly fine in all non-IE browsers, but nothing happening in IE
var url = window.URL.createObjectURL(blob);
document.getElementById(documentContentiFrameId).setAttribute("src", url);
};
xhr.send;
Пожалуйста, дайте мне, если вы получите какую-либо информацию по этому вопросу, было бы очень полезно.
1 ответ
Я узнал, что в IE невозможно получить правильный URL для ваших записей BLOB, ни одна из моих попыток не увенчалась успехом. Мои альтернативные решения: 1) перейти на pdf.js, библиотеку javascript с открытым исходным кодом, которая позволяет отображать двоичные файлы pdf и эквивалентные BLOB-объекты PDF. 2) Напишите своих собственных зрителей, используя открытые библиотеки PDF, которые будут занимать много времени и требовать дополнительных усилий для обучения.
Спасибо Вишну