使用FileSaver在IE11上保存文件

rtr*_*lor 4 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);
Run Code Online (Sandbox Code Playgroud)

当第一条指令(新)执行时,我收到此错误:

"该对象不接受此操作"

在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 ....
     }
Run Code Online (Sandbox Code Playgroud)

任何帮助应该被赞赏.

问候

rtr*_*lor 10

我找到了适用于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);
}
Run Code Online (Sandbox Code Playgroud)

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


End*_*ess 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);
Run Code Online (Sandbox Code Playgroud)