javascript - 如何在 Angular 中使用 HttpClient 从资产中下载文件?
问题描述
根据之前对类似问题的回答,例如这个,下载,或者一般来说,从 assets 目录中读取文件应该是对HttpClient
'sget
方法的直接调用。例如,如果我有一个DownloadService
,我可以简单地将其定义为:
export class DownloadService {
constructor(http: HttpClient){}
download(data) {
this.http.get('/assets/path/to/file.ext').subscribe(res => process(res));
}
}
但是,当我使用 进行测试时ng serve
,我收到一条错误消息,指出这/assets/path/to/file.ext
不是有效的 URL。我试过了./assets/path/to/file.ext
,assets/path/to/file.ext
但我得到了同样的错误。我是否需要在运行时配置某些东西才能使其正常工作,或者自从写了这些答案后这种情况发生了变化?我正在使用 Angular 9。
解决方案
每当您尝试获取与 JSON 不同的内容时,都会发生此错误。要修复它,请responseType
相应地定义。例如
this.http.get('./assets/path/to/file.ext', {responseType: 'text'}).subscribe(res => process(res));
另外,请注意我是如何更改网址的,应该是./assets/foo.bar
这是一个工作示例https://stackblitz.com/edit/angular-9-starter-l1cn5j
只需检查控制台:)
顺便说一句,这些是可接受的类型responseType
:
responseType: 'arraybuffer'|'blob'|'json'|'text'
推荐阅读
- php - XAMPP:每个套接字地址只能使用一次
- java - Liquibase + Spring Data:如何从 JPA 创建实体
- excel - 基于两个不同列值突出显示/着色整行的条件格式公式
- angularjs - 未知为 $attrsProvider 提供 ngRoute 控制器
- reactjs - 反应应用程序未在 Express 中呈现反应组件
- ios - 如何创建对象并在 Objective-C 中使用它?
- docker - 如何在 gitlab 运行器上使用自定义图像?
- wpf - 如何为 CTRL+' 创建 XAML 键绑定
- tensorflow - 如何从其他脚本运行 tensorflow retrain.py?
- c# - 如何获取 col 和 row 的值?