I am trying to download and show the contents of a remote file inside an iFrame , and succeeded in all browsers except for IE(i am trying with IE 10). I have used XMLHttpRequest,Blob,CreateOBjectUrl APIs to complete the process.
In IE i am not able to view the file content inside the iFrame and also no particular error messages appeared on console as well.
I had pasted my code at the bottom of this thread , and a step by step explanation as below
- Getting the download document url & corresponding mime type(Perfectly fine in all broswers).
- Invoking XMLHttp Request , a Http GET Async call ,as response type as 'arraybuffer' (Perfectly fine in all browsers) Upon completing the XMLHttpGet below 3 steps are executing.
- Creating a blob using the proper mimetype ;(Perfectly fine in all other browsers, specially verified the blob by downloading it in IE using MSSaveOrOpenBlob method). 4.InOrder to bind the blob contents to the iFrame , create the blob url using "createObjectURL" (Perfectly fine in all browsers , but in IE we are not getting a perfect URL).
- Finally binding the URL with the iFrame for display.
Code snippet below.
// 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; Please let me if you get any information on this , would be really helpful.