我正在尝试从任何网址下载带有自定义名称的文件。
我在我的代码上尝试这个
downloadAttachment(attachment) {
var a = document.createElement('a');
a.href = attachment.url; //URL FOR DOWNLOADING
a.download = 'CustomName.png';
a.click();
}
从视图中<button (click)="downloadAttachment(attachment)"></button>
它正在下载文件,但仍然从网址中提取文件名。
如何为文件添加自定义名称?
答案 0 :(得分:2)
使用 http.get:
下载文件 let queryApi = someApi
this.http.get(queryApi, { responseType: 'blob', observe: 'response' })
.subscribe(respone => {
// file-type
let fileName = 'custom-file-name.fileExt';
var link = document.createElement('a');
link.href = window.URL.createObjectURL(respone.body);
link.download = fileName;
link.click();
});
答案 1 :(得分:1)
如果HTTP标头Content-Disposition:存在并给出了 与此属性不同的文件名,HTTP标头具有优先级 超过这个属性。
检查响应标题。
Chrome Download Attribute not working
因此,如果可能,您必须更改存储文件的后端。
编辑: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a
此属性仅适用于具有相同来源的资源的链接。
Edit2:
getImage(imageUrl: string): Observable<File> {
return this.http
.get(imageUrl, { responseType: ResponseContentType.Blob })
.map((res: Response) => res.blob());
}
现在你的内存中有一个文件,你可以保存它。
答案 2 :(得分:0)
以这种方式使用
<a [href]=URLoftheFile download="FilenameWithExtension">DownloadFile</a>
但不适用于交叉原点