2017-03-16 6 views
0

나는 Azure에서 SAS를 사용하여 노출되는 Excel 스프레드 시트를 가지고 있으며 다운로드 한 후 파일이 손상되었다고 말합니다. 여기에 올바른 파일 이름으로 다운로드 저장하고FileSaver.js를 사용하여 Azure Blob 저장소에서 손상된 파일 다운로드

var result : any= {}; 
result.fileUri = 
    "https://mystorageaccount.blob.core.windows.net/market-files/33b55b3c-8997-405c-af31-33f6f3e79daf?sv=2016-05-31&sr=b&sig=5Xw%2F4UPcdXbXrxd4mIcZUPQX%2FZzVZfDTQoTfr5V6NTY%3D&st=2017-03-16T18%3A00%3A12Z&se=2017-03-17T18%3A05%3A12Z&sp=rw"; 

this.http.get(result.fileUri).subscribe(
      (response: any) => { 
           var mediaType = 'application/octet-stream'; 
           var blob = new Blob([response._body], { type: mediaType }); 
           var filename = 'test.xlsx'; 
           saveAs(blob, filename); 
      }); 

파일을 URI에 코드입니다하지만 난 그것을 열 때, 나는 파일을 말하는 Excel에서 오류가 손상 얻을.

답변

0

저는 Angular2의 전문가는 아니지만 응답 본문을 arraybuffer으로 변환해야한다고 생각합니다. 그것에 대처하는 방법에 대해서는 this post을 (를) 읽을 수 있습니다.

다음은 Azure Blob Storage에서 일반 Javascript 및 FileSaver.js 파일을 다운로드하는 예입니다.

var fileUri = "https://storageaccount.blob.core.windows.net/market-files/<bolbNameAndSAS>"; 
var oReq = new XMLHttpRequest(); 
oReq.open("GET", fileUri, true); 
oReq.responseType = "arraybuffer"; 

oReq.onload = function(oEvent) { 
    var blob = new Blob([oReq.response], {type: "application/octet-stream"}); 
    var filename = 'test.xlsx'; 
    saveAs(blob, filename); 
}; 

oReq.send(); 
관련 문제