使用FileSaver在IE11上保存文件

时间:2016-09-01 08:47:03

标签: javascript file internet-explorer-11 filesaver.js

我使用的是FileSaver库(https://github.com/eligrey/FileSaver.js)并且无法在IE11上运行,其他浏览器我没有遇到任何问题。

代码是这样的:

var file = new File(["content"], "sample.xml", { type: "application/xml;charset=utf-8" });
saveAs(file);

我在执行第一条指令(新)时遇到此错误:

"对象不接受此操作"

git hub上存在一个未解决的问题,但实际上没有解决方案,我正在寻找适用于IE11的解决方法,如下所示:

try {
                var file = new File([msg.d], "test.xml", { type: "application/xml;charset=utf-8" });
                saveAs(file);
     } catch (err) {
                // Code that works on IE11 ....
     }

任何帮助都应该受到赞赏。

此致

2 个答案:

答案 0 :(得分:9)

我找到了适用于IE11的解决方法。

这是代码:

try {
            var file = new File(['content'], fileName, { type: 'application/xml;charset=utf-8' });
            saveAs(file);
} catch (err) {
            var textFileAsBlob = new Blob(['content'], { type: 'application/xml' });
            window.navigator.msSaveBlob(textFileAsBlob, fileName);
}

我希望这会对某人有所帮助,与IE11合作会耗费时间来处理这样的小事。

答案 1 :(得分:9)

http://caniuse.com/#search=file [2]有些浏览器不支持File构造函数。

获取File实例的唯一方法是input[type=file]

而不是将它包裹在try / catch周围,为什么不这样做:

var blob = new Blob(['content'], { type: 'application/xml' });
saveAs(blob, fileName);