2016-09-01 4 views
3

FileSaverライブラリ(https://github.com/eligrey/FileSaver.js)を使用していますが、IE11では動作しません。他のブラウザでは問題ありません。 (新)最初の命令を実行したとき、私はこのエラーを取得していFileSaverで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 .... 
    } 

ご了承ください。

よろしく

+1

があなたの代わりに、ファイルのブロブを試してみましたか?どんな違いがあるとは思わないか... – Endless

+0

この[issue#92](https://github.com/eligrey/FileSaver.js/issues/92)を参照しましたか? – Endless

+0

はい、ちょうどその1 – rtrujillor

答えて

5

私は、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での作業は、このような小さなことのために時間を消費します。

+0

これは素晴らしいですが、ファイルを保存するためのパスを指定したり、プロンプトなしでそれを行う方法もあります。 –

+0

素晴らしい作品です。少なくとも半分以上私を救ったでしょう。ありがとう! –

4

http://caniuse.com/#search=file [2]一部のブラウザはファイルコンストラクタをサポートしていません。

あなたはFileインスタンスを取得することができる唯一の方法は、単にこれをしない理由

input[type=file]て代わりの試みのまわりでそれをラップ/キャッチです:

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

こんにちは、ファイルの代わりにBlobだけを使用するのですか? ?私はそれを試してみるつもりです。提案していただきありがとうございます! – rtrujillor

+0

もう一度、それは、より少ないコードとよりクリーンで動作します。ありがとう! – rtrujillor

関連する問題