IE + XMLHttp + CreateObjectURL Ошибка

Я пытаюсь загрузить и показать содержимое удаленного файла внутри iFrame, и это удалось во всех браузерах, кроме IE(я пытаюсь с IE 10). Я использовал API XMLHttpRequest,Blob,CreateOBjectUrl для завершения процесса.

В IE я не могу просматривать содержимое файла внутри iFrame, а также на консоли не появлялось никаких сообщений об ошибках.

Я вставил свой код внизу этой темы и пошаговое объяснение, как показано ниже

  1. Получение URL-адреса документа для загрузки и соответствующего типа MIME (отлично подходит для всех браузеров).
  2. Вызов XMLHttp Request, асинхронный вызов Http GET в качестве типа ответа в виде "arraybuffer" (идеально подходит для всех браузеров). После завершения XMLHttpGet ниже выполняются 3 шага.
  3. Создание большого двоичного объекта с использованием подходящего mimetype;(Прекрасно работает во всех других браузерах, специально проверяя большой двоичный объект, загрузив его в IE с помощью метода MSSaveOrOpenBlob). 4. Для того чтобы связать содержимое блоба с iFrame, создайте URL-адрес блоба с помощью "createObjectURL" (идеально подходит для всех браузеров, но в IE мы не получаем идеальный URL).
  4. Наконец, связывание 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, которые будут занимать много времени и требовать дополнительных усилий для обучения.

Спасибо Вишну

Другие вопросы по тегам