2016-08-25 4 views
2

현재 노드 웹킷으로 빌드 된 데스크톱 앱이 있습니다. 사용자가 온라인 상태 일 때 응용 프로그램은 서버에서 PDF 파일을 엽니 다. 그런 다음 오프라인으로 사용할 수 있도록이 파일을 로컬에 저장합니다.Node.js - 오프라인으로 파일을 다운로드하여 오프라인으로 저장 - 파일이 손상됨

Node.js 파일 시스템의 fs.writeFile()을 사용하여 PDF를 로컬로 저장하지만 응용 프로그램을 통해 PDF를 열려고하면 PDF가 비어 있습니다. 폴더에서 직접 열려고하면 아래 오류가 발생합니다. 사람이

enter image description here

조언을 주시겠습니까?

//save PDF file for offline 
function saveFile(pdfvar) { 
    var filename = 'test.pdf'; 
    fs.writeFile(filename, pdfvar); 
} 

//open PDF in new window 
$('#stage').on('click', '#pdflink', function(event){ 
    var pdfvar = (this.getAttribute('data-pdffile')); 
    window.open(pdfvar, "_blank"); 
    if(online===true){ 
     saveFile(pdfvar); 
    } 
}); 
+0

당신의 PDF가 새 창에서 렌더링 ?? 그리고 오류 메시지를 추가하기입니다. – vkstack

+0

죄송합니다, 오류를 추가하는 것을 잊었습니다! 네, 새로운 창이 열리지 만 PDF는 단지 공백으로 채워지지 않습니다 – LeeTee

+0

'pdfvar'에는 유효한 PDF 파일 – vkstack

답변

0
  1. 당신은 DOM 요소에 PDF의 전체 내용을 this.getAttribute('data-pdffile') 속성 잡고 있습니까? 이것은 손상 될 수있는 곳입니다.

  2. 당신이

    window.open(pdfvar, "_blank"); 
    

내용이 그렇게 열 준비가 아닌 호출 할 때. 먼저 base64로 인코딩 된 URL로 변환해야합니다.

window.open('data:application/pdf,' + escape(pdfvar)); 

UPDATE :

실제 문제는 영업 이익이 "pdfvar"

fs.writeFile(filename, pdfvar); 

의 URL의 사용하여 파일을 저장하려고했지만 만든 파일 만 포함 된 것이 었습니다 URL 자체. 어떤 요구되었다하는 것은 HTTP 라이브러리를 사용하여 먼저 파일을 다운로드했다 :

+0

1. DOM에 전체 콘텐츠가 들어 있지 않습니다. PDF 파일의 URL 만. 그것은 내가 잘못 가고있는 곳이어야합니다. 이 문제를 어떻게 해결할 수 있습니까? – LeeTee

+0

2. 온라인 상태에서도 "PDF 문서를로드하지 못했습니다"라는 메시지가 나타납니다. – LeeTee

+0

@LeeTee 왜 "saveFile"에 URL을 전달합니까? 그런 다음 fs.writeFile ('test.pdf', 'http://address.com/file.pdf')을 얻습니다. 두 번째 매개 변수는 URL이 아닌 실제 데이터 여야합니다. 로컬로 저장된 파일은 현재 URL이있는 텍스트 파일입니다 ... – Pawel

관련 문제