Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Saving file on IE11 with FileSaver

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.

like image 583
rtrujillor Avatar asked Sep 01 '16 08:09

rtrujillor


People also ask

How do I save a file in saver?

const FileSaver = require('file-saver'); // Save Blob file const file = createBlob('Hello, file! '); FileSaver. saveAs(file, "myFile. txt"); // Save URL FileSaver.

What is a file saver?

File Saver Overview. The File Saver component enables you to save files on the client machine. The saving of files is done through the saveAs method. You can consume the package from TypeScript and JavaScript projects alike.

What is FileSaver in angular?

Angular File Saver is an AngularJS service that leverages FileSaver.js and Blob.js to implement the HTML5 W3C saveAs() interface in browsers that do not natively support it.


2 Answers

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.

like image 65
rtrujillor Avatar answered Oct 07 '22 13:10

rtrujillor


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);
like image 26
Endless Avatar answered Oct 07 '22 13:10

Endless