0

javascript에 "멍청한 놈"입니다. 내 질문에 간단한 것이면 죄송합니다. 어쨌든 특정 파일을 열려면 배치 파일을 만드는 코드를 작성하고 있습니다. 운영 시스템에 의해 정의 된 기본 응용 프로그램에서 파일을 예를 들어, PDF 파일은 어도비의 아크로뱃 리더에서 열립니다, 나는 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에서 파일을 다운로드 할 수있게되었습니다. 나는 코드에서 하나의 작은 변경 한 다음 data2blob 함수에서 blob 변수를 만들 때 내가 사용했습니다

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

확실하지, 그것이 방식의 차이 무엇 지금 전에 어떻게 물론 결과를 제외하고