Saving file on IE11 with FileSaver
Solution 1
http://caniuse.com/#search=file [2] Some browser don't support the File constructor.
The only way you can get a File instance is through input[type=file]
instead of wrapping it around a try/catch why not just do this:
var blob = new Blob(['content'], { type: 'application/xml' });
saveAs(blob, fileName);
Solution 2
I have found a workaround that works on IE11.
This is the code:
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);
}
I hope this will help somebody, working with IE11 consumes time for little thing like this.
rtrujillor
Software Engineer passionate about mobile, cloud, big data, machine learning, and robotics.
Updated on June 17, 2022Comments
-
rtrujillor almost 2 years
I'm using FileSaver library ( https://github.com/eligrey/FileSaver.js) and does not work on IE11, with other browsers I had no problem.
The code is this:
var file = new File(["content"], "sample.xml", { type: "application/xml;charset=utf-8" }); saveAs(file);
I'm getting this error when the first instruction (new) executes:
"the object does not accept this action"
There's an open issue on git hub, but actually with no solution, I'm looking for a workaround that should work on IE11, like this:
try { var file = new File([msg.d], "test.xml", { type: "application/xml;charset=utf-8" }); saveAs(file); } catch (err) { // Code that works on IE11 .... }
Any help should be appreciated.
-
rtrujillor over 7 yearsHi, do you mean to use just Blob instead of File in anycase? ? I'm going to try it. Thanks for the suggestion!
-
rtrujillor over 7 yearsHi again, it works, less code and more clean. Thanks!
-
Cold_Class about 7 yearsthis works great, but is there a way to specify the path to which to save the file to and maybe even to do it without the prompt?
-
Our_Benefactors almost 7 yearsWorks great. Probably saved me at least a half a day. Thanks!