【发布时间】:2015-08-05 15:29:28
【问题描述】:
我想使用 IE9 下载文件(任何类型),无需任何重定向。重定向是指提供我尝试下载的资源的 URL 到当前文档,如果 MIME 类型不是文档类型,则强制下载。
所以我只能使用 XHR 对象获取数据并找到将其保存在磁盘上的方法。由于我使用的是 IE9,所以我无法使用 IE10+ 中提供的任何 File API。
所以忘了:
- 使用
Blob - 使用
FileSaver(https://github.com/eligrey/FileSaver.js/)- 使用
Blob和typedarraypolyfills 需要调试,我无法让它们工作
- 使用
现在我在 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