0
我知道这是一个愚蠢的问题,但有人可以告诉我如何提示用户下载由响应后端发送的文件?下载文件的响应angular2
我知道这是一个愚蠢的问题,但有人可以告诉我如何提示用户下载由响应后端发送的文件?下载文件的响应angular2
你有两种可能性:
如果后端通过单击链接然后后端应在头部使用的内容类型应用程序/八位字节流,直接将文件发送给浏览器。这会导致浏览器询问用户如何保存/打开文件。
如果您通过Angular代码(Http Module)从后端加载文件,那么您可以使用filesaver.js或类似的库。然后你有完全的控制权,并可以自己提示用户。
npm install file-saver --save
...和分型:
npm install @types/file-saver --save-dev
在服务代码:
public getFile(path: string):Observable<Blob>{
let options = new RequestOptions({responseType: ResponseContentType.Blob});
return this.http.get(path, options)
.map((response: Response) => <Blob>response.blob())
.catch(this.handleError);
}
对于使用FileSaver.js把下面的导入到你的组件:
import * as FileSaver from 'file-saver';
触发下载使用说明:
this.api.getFile("file.pdf")
.subscribe(fileData => FileSaver.saveAs(fileData, "file.pdf"));