首页 > 解决方案 > 如何在前端使用 Angular5 管理 responseType = 'blob'

问题描述

我想下载一个doc.pdf有文本的'My first file download'。当我尝试下载到 zip 文件时,我的文件有一些 files.xml 就像这张照片 在此处输入图像描述

你能建议我如何将此文件转换为 pdf 格式吗?

请按照我的代码:

组件.ts

  export(id: string) {
    this.ss.download(id)
      .subscribe(data => { console.log(`excel data: ${data}`); FileSaver.saveAs(data, 'doc.zip') },
        error => console.log('Error downloading the file.'),
        () => console.log('Completed file download.'));
  }

服务.ts:

  public download(id: string): Observable<any> {
    //let oReq = new XMLHttpRequest();
    // let options = new RequestOptions({ responseType: ResponseContentType.Blob });
    let params = new URLSearchParams();
    let headers = new Headers();
    headers.append('x-access-token', this.auth.getCurrentUser().token);
    headers.append('sale_id', id);
    headers.append('Content-Type', 'application/json;charset=UTF-8');
    headers.append('responseType':'arraybuffer');
    return this.http.get(Api.getUrl(Api.URLS.download), {
      headers: headers,
      responseType: ResponseContentType.Blob,

    }).map(res => res.blob()) 
  }

必需的参数是:方法get。参数需要在标头中发送。

标签: xmlangulartypescriptblob

解决方案


我不知道这是否会对您有所帮助(我对您的工具不太感兴趣)

您正在下载的文件是一种DOCX格式。这是现代的 MS-Word 格式。这种格式——即使它有不同的扩展名——是一个简单的 ZIP 文件。

任何压缩文件的PK开头都是一个神奇的代码,告诉消费者这是什么类型的文件。

“PK”回到“PKWARE”并指向Phil Katz,他是发明zip格式的人之一。

压缩文件 - 与任何其他文件一样 - 只是一堆字节。消费者必须知道,如何阅读和解释这一点。

您应该尝试将字节流完全写入文件,将其命名为“However.docx”并尝试使用 MS-Word 打开它。

如果这没有帮助,字节流可能会被压缩,或者以某种方式本身被编码......至少你给我们展示的图片看起来不像这样。

不要尝试将字符复制并粘贴到任何类型的编辑器中。这样的文件有几个不可见的字符,它们会丢失......获取字节并存储它们就像你得到它们一样(你会做同样的存储JPEG)。


推荐阅读