0

我在malan noob中使用javascript所以我很抱歉,如果我的問題是簡單的。無論如何, 我正在寫一個代碼創建一個批處理文件以便打開某個文件由操作系統定義的默認應用程序例如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.sdx'而不是'openPDF.bat'。我已經檢查過,確實只有添加的擴展名纔是相同的文件。有沒有人有一個想法是什麼原因呢?我該如何克服它?

回答

0

我終於成功設法在Firefox中下載文件,就像在IE中一樣。我做的代碼一個微小的變化:在data2blob函數創建blob變量時我用:

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

不知道,什麼是它的方式之間的差異前,以及它是如何現在,除了結果當然。