0

Я «ma 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. Я сделал одно небольшое изменение в коде: при создании переменной blob в функции data2blob я уже использовал:

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

не уверен, что разница между, как это было раньше и как сейчас , за исключением, конечно, результата.