javascript - 如何在 Angular 中使用 HttpClient 从 Assets 中下载文件?

标签 javascript angular

基于以前对类似问题的回答,例如 this one 、下载或一般情况下,从 Assets 目录读取文件应该是对 HttpClientget 方法的直接调用。例如,如果我有一个 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。

最佳答案

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

相关文章:

javascript - 如何使用局部变量创建全局变量?

javascript - select 触发 Javascript 方法中的默认值

css - Angular 2 测试 - 获取 DOM 元素样式

javascript - 如何从 Adob​​e Business Catalyst 中的同一登录页面创建单独的安全区域?

javascript - 从两个变量计算任务的紧迫性

angular - 如何取消订阅 ngrx/store?

angular - 使用 Angular 4 在单个组件中加载动态模板

javascript - 找不到模块 : Error: Recursion in resolving in angular app

dom - Angular 2 : change DOM elements outside the root AppComponent

javascript - 动态创建的 <th> get 的较低位置为什么?