2014-11-05 4 views
6

나는 Angular JS 응용 프로그램에 FileSaver.jsBlob.js을 사용하여 REST 서비스 (파일을 나타내는 바이트 배열을 반환)에서 반환 된 PDF를 저장합니다.서비스로 돌아온 PDF 저장

var headers = {headers: {"Authorization":"Bearer "+token, "Accept":"application/pdf"}}; 

    $http.get(URL, headers) 
    .success(function (data) { 
     var blob = new Blob([data], {type: 'application/pdf'}); 
     saveAs(blob, 'contract.pdf'); 
    }); 

파일이 올바른 유형으로 저장되고 페이지 수가 올바르지 만 완전히 비어 있습니다. 편집기로 열면 서버에서 반올림 한 것처럼 서버에서 반환 한 데이터의 첫 번째 부분 만 포함되어있는 것으로 나타났습니다.

도와 주신 모든 분들께 감사드립니다.

+1

해결 했습니까? – ronnyfm

+0

같은 질문이 있습니다 .. ;-) 해결책을 찾았습니까? 감사. –

+0

이것에 또한 붙어 있습니다. – user2085143

답변

7

$ http.get은 (는) 이진 데이터를 올바르게 처리하지 않습니다. $http({method: "GET", url: URL, responseType: "arraybuffer", ...})(see angularjs)을 사용해 데이터 용으로 삽입 할 수있는 바이너리 개체를 얻으십시오.

responseType: "blob"도 사용할 수 있으므로 var blob을 만들지 않아도되지만 responseType에 브라우저 지원이 적다 고 생각됩니다.

0

config 인수에 응답 유형을 추가하는 것이 효과적입니다. 시도해보십시오.

var config = { responseType: 'blob', headers: {"Authorization":"Bearer "+token, 
"Accept":"application/pdf"}}; 

    $http.get(URL, config) 
     .success(function (data) { 
      var blob = new Blob([data], {type: 'application/pdf'}); 
      saveAs(blob, 'contract.pdf'); 
     });