admin管理员组文章数量:1415100
Based on previous answers to similar questions such as this one, downloading, or in general, reading files from the assets directory should be a straightforward call to HttpClient
's get
method. For example if I have a DownloadService
, I could simply define it as:
export class DownloadService {
constructor(http: HttpClient){}
download(data) {
this.http.get('/assets/path/to/file.ext').subscribe(res => process(res));
}
}
However, when I test this using ng serve
, I get an error saying that /assets/path/to/file.ext
is not a valid URL. I tried ./assets/path/to/file.ext
, and assets/path/to/file.ext
but I got the same error. Do I need to configure something in the runtime to get this working properly, or has this changed since those answers were written? I'm using Angular 9.
Based on previous answers to similar questions such as this one, downloading, or in general, reading files from the assets directory should be a straightforward call to HttpClient
's get
method. For example if I have a DownloadService
, I could simply define it as:
export class DownloadService {
constructor(http: HttpClient){}
download(data) {
this.http.get('/assets/path/to/file.ext').subscribe(res => process(res));
}
}
However, when I test this using ng serve
, I get an error saying that /assets/path/to/file.ext
is not a valid URL. I tried ./assets/path/to/file.ext
, and assets/path/to/file.ext
but I got the same error. Do I need to configure something in the runtime to get this working properly, or has this changed since those answers were written? I'm using Angular 9.
- did you console response? what is exact content? – Hien Nguyen Commented Jul 22, 2020 at 14:55
- I don't think it even gets to the point where I could process the response because it rejects the URL before it even attempts to execute the request. – Psycho Punch Commented Jul 22, 2020 at 14:58
2 Answers
Reset to default 3This error occurs whenever you try to fetch something different than a JSON.
To fix it, please define the responseType
accordingly. For example
this.http.get('./assets/path/to/file.txt', {responseType: 'text'}).subscribe(res => process(res));
Also, please notice how I've changed the URL, it should be ./assets/foo.bar
Here's a working example https://stackblitz./edit/angular-9-starter-l1cn5j
Just check the console :)
By the way, these are the accepted types for responseType
:
responseType: 'arraybuffer'|'blob'|'json'|'text'
I found out that the issue I was experiencing was due to a custom HTTP interceptor that assumes all URLs are valid URLs (file paths aren't). What I ended up doing to address this was to modify the interceptor to ignore URLs that are not valid.
Getting the asset to download using HttpClient
's get
works as described.
本文标签: javascriptHow to download files from assets using HttpClient in AngularStack Overflow
版权声明:本文标题:javascript - How to download files from assets using HttpClient in Angular? - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745158854a2645338.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论