gpt4 book ai didi

javascript - IE + XMLHttp + CreateObjectURL 错误

转载 作者:行者123 更新时间:2023-11-27 23:28:52 25 4
gpt4 key购买 nike

我正在尝试下载并显示 iFrame 内远程文件的内容,并且在除 IE 之外的所有浏览器中均成功(我正在尝试使用 IE 10)。我使用了 XMLHttpRequest、Blob、CreateOBjectUrl API 来完成该过程。

在 IE 中,我无法查看 iFrame 内的文件内容,控制台上也没有出现任何特定的错误消息。

我已将我的代码粘贴到该线程的底部,并逐步说明如下

  1. 获取下载文档的 URL 和相应的 MIME类型(在所有浏览器中都完美)。
  2. 调用 XMLHttp 请求Http GET 异步调用,响应类型为“arraybuffer”(完美在所有浏览器中都可以)完成 XMLHttpGet 后,以下 3 个步骤是正在执行。
  3. 使用正确的 mimetype 创建 blob ;(在所有其他浏览器中都完美,特别是通过使用 MSSaveOrOpenBlob 方法在 IE 中下载 blob 来验证该 blob)。4.为了将 blob 内容绑定(bind)到 iFrame,请使用“createObjectURL”创建 blob url(在所有浏览器中都很好,但在 IE 中我们没有得到完美的 URL)。
  4. 最终将 URL 与 iFrame 绑定(bind)以进行显示。

下面的代码片段。

// 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;

如果您获得任何相关信息,请告诉我,这将非常有帮助。

最佳答案

我发现在 IE 中不可能为您的 blob 条目获取正确的 URL,我的所有尝试都没有成功。我的替代解决方案,1)使用 pdf.js,一个开源 JavaScript 库,它允许渲染 pdf 二进制文件和等效的 pdf blob。2)利用开放的PDF库编写自己的查看器,这将非常耗时,并且需要更多的学习精力。

谢谢,毗湿奴

关于javascript - IE + XMLHttp + CreateObjectURL 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34741269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com