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"}); 

不知道,什么是它的方式之间的差异前,以及它是如何现在,除了结果当然。