3

admin 사용자가 몇 가지 옵션을 설정하고 버튼을 클릭하여 보고서를 실행할 수있는 관리자 제어판이 있습니다. 보고서는 CSV 파일 다운로드 프롬프트를 사용자에게 보내야합니다.AngularJS CSV 파일 다운로드 API

나는 ui-router$resource 서비스를 사용하고 있습니다. 응답 헤더/MIME 유형이 올바르게 설정되었지만 $resource 처리기로 CSV 파일이 텍스트로 반환됩니다 (파일 다운로드가 시작되지 않음).

$scope에서 쿼리 문자열을 작성하여 직접 다운로드 링크를 만들려고했지만 불행히도 내 API의 인증 스키마가 사용자 정의 HTTP 헤더 토큰을 사용하고 API (다른 하위 도메인에도 있음)로 전송할 수 없습니다. 이와 하나 앵커 태그를 통해 :

<a href="http://example.com/admin/report/csv?usertype=1&days=5">Run</a> 

(사용자 정의 헤더)는 XHR 요청을 사용하여 파일 다운로드 프롬프트를 시작하는 방법이 있나요?

답변

4

간단한 링크를 통해 보고서를 다운로드 할 수 없도록 맞춤 헤더 토큰을 사용하고 있습니다. 요청은 XHR을 통해 이루어져야합니다. 내 두 부분으로 솔루션 :

  1. attachment 헤더 파일을 제거, 직접 텍스트로 API에서 CSV 데이터를 반환. 이것은 브라우저 솔루션 인 파일 다운로드에 REST JSON API를 사용하지 않기 때문에 올바른 해결책입니다.

  2. Blob에 API 응답 데이터를 래핑 한 다음 https://github.com/eligrey/FileSaver.js을 사용하여 파일 다운로드를 시작합니다.

결점은 IE10 +가 필요하지만, 제 경우에는 괜찮습니다.

+0

합리적인 것처럼 보이지만 예제로 바이올린이나 요점이 있습니까? 또는 스크립트로 대답을 업데이트 할 수 있습니까? 감사합니다 –