使用Angular从php后端下载的损坏的zip文件

时间:2018-03-14 08:51:57

标签: angular http-headers filesaver.js

我在PHP中创建了一个方法,用于下载一系列pdf文件,然后将它们存档为zip文件并发送header('Content-type: application/zip')

临时文件没问题。这意味着您可以使用正确的文件解压缩存档。

前端部分。 我正在做POST后端:

downloadSelectedInvoices(data) : Observable<any> { let params = { data: JSON.stringify(data) } return this.http.post(this.settings.backend.downloadSelectedInvoices, params, this.options) .catch((error:any) => Observable.throw(error || 'Server error')); }

我正在订阅这个observable(在组件中)并解析结果

this.downloadZip(result._body);

downloadZip(data){
      let blob = new Blob([data], {
            type: "application/zip"
        });
      FileSaver.saveAs(blob, "invoices.zip");
}

它下载了一个文件,但它已损坏。我可以打开它,里面只有一个符号。我做错了什么?

1 个答案:

答案 0 :(得分:1)

我终于成功了。

当您向后端POST时,您需要通过ResponseContentType指定回复:

let options = new RequestOptions({responseType: ResponseContentType.Blob});