2016-08-04 2 views
1

xlsx 형식의 보고서를 다운로드해야하는 작업을하고 있습니다. 보고서 파일은 서버에서 성공적으로 생성되며 클라이언트 측 (aurelia-http-client)에서도 수신되지만 다운로드하는 방법을 알지 못합니다.aurelia-http-client를 통해 Excel 파일 다운로드

답변

0

나는이 같은 아우렐 리아에서 response interceptor 같은에서 끝낼 것입니다 ...이 답변 https://stackoverflow.com/a/30270714/6677648

에서 같은 일을 할 것입니다 :

.withInterceptor와 힐로()가 생성 된
 .withResponseType('blob') 
     .withInterceptor({ 
      response(message) { 
       var defaultFileName = "default.txt"; 
       var disposition = message.headers.headers['content-disposition']?message.headers.headers['content-disposition']:message.headers.headers['Content-Disposition']; 
       if (disposition) { 
        var match = disposition.match(/.*filename=\"?([^;\"]+)\"?.*/); 
        if (match[1]) 
         defaultFileName = match[1]; 
       } 
       defaultFileName = defaultFileName.replace(/[<>:"\/\\|?*]+/g, '_'); 
       if (navigator.msSaveBlob) 
        return navigator.msSaveBlob(message.response, defaultFileName); 
       var blobUrl = window.URL.createObjectURL(message.response); 
       var anchor = document.createElement('a'); 
       anchor.download = defaultFileName; 
       anchor.href = blobUrl; 
       document.body.appendChild(anchor); 
       anchor.click(); 
       document.body.removeChild(anchor); 
      } 
     }) 
+0

작동합니다! 감사! – Lumdeia

0

오류 응답에서 응답을 변경하지 않고 오류를 수정하고 동시에 여러 파일을 언로드하십시오.

getLogsCsv(param) { 
    this.http.configure(config => { 
     config 
      .withResponseType('blob'); 
    }); 
    return this.http.get("/admin/api/logs" + param) 
     .then(response => { 
      if (response.statusCode == 200) { 
       var defaultFileName = "FileName.csv"; 
       var blobUrl = window.URL.createObjectURL(response.response); 
       var anchor = document.createElement('a'); 
       anchor.download = defaultFileName; 
       anchor.href = blobUrl; 
       document.body.appendChild(anchor); 
       anchor.click(); 
       document.body.removeChild(anchor); 
       return response.content; 
      } else { 
       console.log('response was not ok.'); 
       console.log(response); 
      } 
     }) 
     .catch(error => { 
      console.log(error); 
     }); 
} 
0

나는 downloadjs 라이브러리를 사용했습니다. 라이브러리를 설치하여 aurelia.json에 추가 한 후 다음과 같이

import * as download from 'downloadjs' 

그런 다음 코드를 작성 추가

this.httpClient.fetch('your/url/here') 
    .then((response: Response) => response.blob()) 
    .then((blob: Blob) => download(blob, 'filename.extension', 'mime type of the file')); 

그리고 짜잔, 파일이 다운로드됩니다.

관련 문제