2016-08-27 5 views
0

저는 wkhtmltopdf를 사용하여 서버 측에서 pdfs를 생성하고 이미지에 텍스트를 적용하는 PHP gd lib도 사용하고 있습니다. 둘 다 REST API를 통해 전송되므로 사용자가 다운로드 할 수 있습니다 (pdf 및 jpg에 대한 다른 방법이 있음).AngularFileSaver가 깨진 파일을 저장합니다

클라이언트 측에서는 Blob 및 FileSaver 서비스를 사용하는 webpack 용 AngularFileSaver를 사용하고 있지만 저장된 파일이 손상 되었기 때문에 (pdf가 비어 있거나 jpg가 이미지를 표시 할 수 없기 때문에) 제대로 작동하지 않습니다.

저는 다른 프로젝트에서 wkhtmltopdf를 사용 했으므로 서버 측 스크립트에 문제가 없다고 확신합니다. 괜찮 았습니다.

은 여기 내 클라이언트 측 코드입니다 :

$.ajax({ 
    type: 'GET', 
    url: '/cloud/files/pdf', 
    headers : { 
    'Authorization' : 'some_token', 
    'Content-Type' : 'application/pdf' 
    }, 
    responseType : 'blob' 
}).done(function(data) { 
    var fileName = "sample.pdf"; 
    var file = new Blob([data], {type: 'application/pdf'}); 
    FileSaver.saveAs(file, fileName); 
}); 

내가 다른 물방울의 '유형'속성, 또한 아약스의 responseType (BLOB 또는 arrayBuffer)와 함께 노력하고 결과는 항상 동일했다.

나는 이것에 대해 많은 시간을 읽은 후에 잘못된 생각이 들지 않습니다. 나는 누군가가 나에게 단서를 줄 수 있다고 확신한다. :)

답변

0

jQuery의 ajax와 responsetype은 결코 작동하지 않는다. 바이너리 데이터를 다루고 있고 jQuery 응답이 항상 텍스트이므로 저장 한 파일이 손상 될 수 있습니다. jQuery에서 벗어나 XHR을 사용하거나 가져 오는 것이 좋습니다.

관련 문제