0

javascriptで私は "noob"ですので、私の質問が単純なものならごめんなさい 私はバッチファイルを作成して特定のファイルを開くコードを書いています。。オペレーションシステムによって定義されたデフォルトのアプリケーションでファイルたとえば、PDFファイルは、AdobeのAcrobat Readerで開きますそうするために、私はFileSaver.jsJavascript - 自分で作成したバッチファイルのプロンプトを表示

を使用していますそして、私のコードは次のようになります:

$(document).ready(function() { 
    $('#openPdf').click(function() { 
     saveAs(data2blob(
       myPDF), 
      'openPDF.bat'); 
    }); 
}); 

function data2blob(data, isBase64) { 
    var chars = ""; 
    if (isBase64) 
     chars = atob(data); 
    else 
     chars = data; 

    var bytes = new Array(chars.length); 
    for (var i = 0; i < chars.length; i++) 
     bytes[i] = chars.charCodeAt(i); 
    var blob = new Blob([new Uint8Array(bytes)], 
      {type: "text/plain;charset=utf-8"}); 
    return blob; 
} 

myPDFは、特定のファイルへの文字列です。の存在。 IE上で自分のコードをテストすると、完全に動作します。しかし、Firefoxで試してみると、作成されたファイルは 'openPDF.bat'ではなく 'openPDF.bat.sdx'です。私はそれが本当に追加された拡張子だけで同じファイルであることを確認しました。誰にもこれの理由は何ですか?どのように私はそれを克服することができますか?

答えて

0

私は最終的にIEと同じ方法でFirefoxでファイルをダウンロードすることができました。私は、コード内の1つのマイナーな変更を加えた:私が使用したdata2blob機能でblob変数を作成する場合:

var blob = new Blob([new Uint8Array(bytes)], {type: "application/octet-stream"}); 

わからない、それが前にいた方と、それが今であるとの違いは何ですかもちろん、結果を除いて。

関連する問題