Angular 2 下载文件:结果损坏

2023-11-26

我正在尝试使用 Angular 2/TypeScript 和 Web API 下载文件。我遇到的问题是,当下载文本文件时,该文件是文件,但是当尝试下载 PDF 文件时,例如,它已损坏。下载的文件内容都是乱码废话。

我使用的 TypeScript 如下:

downloadFile(fileId: string): Observable<File> {
    this.applicationsUrl = `${APIConfig.BaseUrl}/documents/download/${fileId}/`;

    let headers = new Headers({ 'Content-Type': 'application/json', 'MyApp-Application' : 'AppName' });
    let options = new RequestOptions({ headers: headers });

    return this.http.post(this.applicationsUrl, '', options)
        .map(this.extractContent)
        .catch(this.handleError);
}

private extractContent(res: any) {
    let blob: Blob = new Blob([res._body], { type: 'application/pdf'});
    window['saveAs'](blob, 'test.pdf');
}

window['saveAs'] 只是访问 JavaScript FileSaver.js 函数的解决方法。

此外,我已将 res:Response 设置为 res:any,这样我就可以在 JavaScript 下访问私有 _body 属性,而不会在 TypeScript 中出现编译失败。

任何帮助将不胜感激。


从 Angular RC5 开始,以下代码应该适合您:

downloadFile(fileId: string): Observable<File> {
this.applicationsUrl = `${APIConfig.BaseUrl}/documents/download/${fileId}/`;

let headers = new Headers({ 'Content-Type': 'application/json', 'MyApp-Application' : 'AppName', 'Accept': 'application/pdf' });
let options = new RequestOptions({ headers: headers, responseType: ResponseContentType.Blob });

return this.http.post(this.applicationsUrl, '', options)
    .map(this.extractContent)
    .catch(this.handleError);
}

private extractContent(res: Response) {
    let blob: Blob = res.blob();
    window['saveAs'](blob, 'test.pdf');
}

我有一个类似的问题并将 Accept-Header 设置为application/pdf, 响应类型为Blob并通过响应上相应的方法访问 blob 为我解决了这个问题:) (我也在使用 FileSaver)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular 2 下载文件:结果损坏 的相关文章

随机推荐

  • 如何用Matlab构造不等宽直方图?

    我想构造一个具有不等箱 间隔 的直方图 Matlab 仅构造具有相等箱的直方图 就好像它是一个图表一样 请帮助我 非常感谢 这是一个例子 x randn 100 1 3 some random data e 10 5 3 1 1 2 3 2
  • virtualenv蛋黄问题

    yolk l给我的信息是我的 Ubuntu 10 04 上安装了 114 个软件包 使用创建新的 virtualenv 目录后 virtualenv virt env virt1 no site packages clear 我切换到那个
  • Linq-to-Entities:选择查询表达式中的日期格式

    我试图直接从 LINQ to Entities 查询表达式获取格式化的日期字符串 nonBusinessDays from ac in db AdminCalendar where ac DateTimeValue gt calendarS
  • Android Toast 通知在冰淇淋三明治中太小 [重复]

    这个问题在这里已经有答案了 有人对冰淇淋三明治中的吐司通知太小有任何问题吗 在我的应用程序中 通知在所有其他版本上看起来都很好 然而 在冰淇淋三明治中 它的尺寸却小得令人难以置信 起初我以为这可能是我的自定义主题 但禁用它后 我看到了相同的
  • 将数据库保存在外部硬盘上

    我正在使用 PostgreSQL 创建一些数据库 但由于我的计算机内存不足 我想将它们保存在外部硬盘上 我怎样才能做到这一点 您可以将数据库存储在另一个磁盘上 方法是将其指定为data directory环境 您需要在启动时指定它 它将适用
  • 在设计 JS 库时,我应该使其兼容 RequireJS/AMD 还是不兼容?

    如果我正在制作一个通用的 JavaScript 库 我应该如何处理 RequireJS 支持 据我所知 让你的代码或多或少地兼容 RequireJS 会让你的代码在没有 RequireJS 的情况下无法使用 那我为什么要这么做呢 没有 Re
  • omu.valueinjecter 深度克隆与类型不同

    我认为我缺少一个关于 valueinjecter 和 或 AutoMapper 的简单概念 但是如何将父级 dto Entity 深度克隆到 biz Entity 并包含所有子级 例如 biz person InjectFrom dto p
  • 如何创建 NodeJS 模块?

    我已阅读 NodeJS 网站上的详细信息 https nodejs org api modules html 我不明白模块是如何工作的 创建模块的最少步骤是什么 以及 npm 如何帮助我 如何创建模块 我如何使用模块 把它放在 npm 上是
  • 如何在 UIDatePicker 中仅禁用日期选择而不是时间选择

    我在我的应用程序中使用 UIDatePicker 我想仅禁用其中的日期选择 并且时间选择不应受到影响 谁能帮我这个 Set the datePickerMode to UIDatePickerModeTime
  • 使用与密钥相同的字符串加密字符串是否安全?

    在 CBC 模式下使用 AES 并使用 IV 当然 对给定密钥本身进行加密是否存在任何安全缺点 遵循以下原则 密钥是秘密的 IV 是公开的 因为这不会影响加密的安全性 然而 潜在的攻击者将会知道 因为他可以访问源代码 该字符串使用其自身作为
  • 具有相机意图和图像选择器意图的选择器

    我创建了一个选择器 用于从文件中选择图像或制作图片 我使用的代码在 Nexus 5 上运行良好 但是当我在 Samsung S5 上尝试时 选择器不显示相机图标 public Intent makePhotoIntent String ti
  • docker 互联网连接 iptables=false

    我放弃 我在 ubuntu 16 04 下使用 Docker 1 12 0 并使用 UFW 进行强化 该机器有 2 个接口 一个公共 eth0 和一个专用网络 eth1 Server Version 1 12 3 Storage Drive
  • 如何仅使用 CSS 获得悬停效果

    我已经得到了圆圈部分 我在 div 上设置了黑色的背景颜色 对于文本 我设置了 a hover 作为显示的颜色 我只是不知道如何为 div 设置 a hover 以及仅针对该周长 这是我的代码 HTML a class cirlink hr
  • 静态成员的两个实例,怎么可能?

    我有一个多线程应用程序 我在共享库中声明一个具有静态成员的类 从不同库的不同线程打印成员的地址会显示不同的结果 宣言 template
  • 指令在 ng-repeat 绑定的 内不起作用

    我有一个表 其中的行通过重复ng repeat 我正在尝试创建一个生成列的模板 td 对于每一行 tr app directive customtd function return restrict E template td positi
  • 来自 AngularJS Get for JSON 的 HTTP 状态 0

    我正在为 JSON 运行 http get 并且状态为 0 我已经下载了相同的 JSON 并且 get 在本地工作 并且在 Python 中使用请求库我可以毫无问题地获取 JSON 但是在AngularJS 不起作用 我不明白的是为什么 A
  • 在 macOS 的 SwiftUI 中更改 TextEditor 背景颜色

    我想更改 macOS 上 SwiftUI 文本编辑器的背景颜色 下面的代码 用于 iOS 是否有一个变体适用于 NSTextField 而不是 UITextView Thanks struct ContentView View init U
  • 社交网络应用程序数据库设计:如何改进此架构?

    背景 我正在为诗人和作家开发一款社交网络应用程序 让他们能够分享诗歌 收集反馈并与其他诗人交流 我很少接受过数据库设计方面的正式培训 但我一直在阅读书籍 SO 和在线数据库设计资源 试图在不过度设计的情况下确保性能和可扩展性 数据库是MyS
  • 复杂数据类型的 Typedef

    我试图从语法的角度理解 C 如何处理复杂 typedef 的底层机制 请考虑下面的示例 问题末尾包含参考文献 typedef int p1d 10 是正确的声明 即 p1d 这里是指向数组的指针 10 个整数 就像使用 Array 类型声明
  • Angular 2 下载文件:结果损坏

    我正在尝试使用 Angular 2 TypeScript 和 Web API 下载文件 我遇到的问题是 当下载文本文件时 该文件是文件 但是当尝试下载 PDF 文件时 例如 它已损坏 下载的文件内容都是乱码废话 我使用的 TypeScrip