2017-07-02 58 views

回答

2

你有两种可能性:

  1. 如果后端通过单击链接然后后端应在头部使用的内容类型应用程序/八位字节流,直接将文件发送给浏览器。这会导致浏览器询问用户如何保存/打开文件。

  2. 如果您通过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"));