基于以前对类似问题的回答,例如 this one 、下载或一般情况下,从 Assets 目录读取文件应该是对 HttpClient
的 get
方法的直接调用。例如,如果我有一个 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.txt', {responseType: 'text'}).subscribe(res => process(res));
此外,请注意我是如何更改 URL 的,它应该是 ./assets/foo.bar
这是一个工作示例 https://stackblitz.com/edit/angular-9-starter-l1cn5j
只需检查控制台 :)
顺便说一下,这些是 responseType
可接受的类型:
responseType: 'arraybuffer'|'blob'|'json'|'text'
关于javascript - 如何在 Angular 中使用 HttpClient 从 Assets 中下载文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63037026/