首页 > 解决方案 > 如何在 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.extassets/path/to/file.ext但我得到了同样的错误。我是否需要在运行时配置某些东西才能使其正常工作,或者自从写了这些答案后这种情况发生了变化?我正在使用 Angular 9。

标签: javascriptangular

解决方案


每当您尝试获取与 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'

推荐阅读