【问题标题】:How to download files using IE9 with HTTP protocol如何使用带有 HTTP 协议的 IE9 下载文件
【发布时间】:2015-08-05 15:29:28
【问题描述】:

我想使用 IE9 下载文件(任何类型),无需任何重定向。重定向是指提供我尝试下载的资源的 URL 到当前文档,如果 MIME 类型不是文档类型,则强制下载。


所以我只能使用 XHR 对象获取数据并找到将其保存在磁盘上的方法。由于我使用的是 IE9,所以我无法使用 IE10+ 中提供的任何 File API。

所以忘了:


现在我在 REST 调用后获取数据并尝试将其写入文档中,如这篇文章:Javascript Save CSV file in IE 8/IE 9 without using window.open()

但是,问题是document.write() 似乎在 UCS-2 中对写入它的任何内容进行了编码,因此从后端发送的二进制文件被重新解释并且文件被损坏。我猜当时只能保存基于文本的文件。

最后一点,我不应该使用闪光灯。

有没有人想到解决编码问题或其他技术来进行下载?

如果有帮助,我正在使用 angularjs 作为前端 JS 框架

【问题讨论】:

  • 如果您不担心文件名保存,请获取二进制安全 Base64 库并使用 mime application/octet-stream 创建数据 uri。虽然为什么你不只是将它作为八位字节流提供是真正的问题
  • 你如何告诉文档它应该期待二进制输入而不是文本?如果您的解决方案不涉及写入文档,那么您如何将这些数据保存在磁盘上?

标签: javascript angularjs download internet-explorer-9 polyfills


【解决方案1】:

对于我们的限制,将令牌作为参数传递以获取文件可下载资源是解决方案。当我们提升 IE 时,我们将改变解决方案。

这意味着删除任何安全链过滤器并在后端对令牌进行手动验证。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-21
    • 2012-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    • 1970-01-01
    相关资源
    最近更新 更多