xml.gzip 文件的下载不起作用
the download of an xml.gzip file does not work
我将下载一个 xml.gzip 文件,其中包含响应:
缓存控制:无缓存、无存储、max-age=0、必须重新验证
连接:保持活动状态
内容配置:附件;文件名=ERKENNUNGSMODELL_CI.9.221_part_1_of_1.xml
内容编码:gzip
内容长度:1323
内容-MD5:fIHw5FJ1KWkBHsZ+jbkuwg==
内容类型:application/xml
日期:2020 年 9 月 10 日,星期四 07:56:46 GMT
过期:0
保持活动:超时=60
编译指示:无缓存
严格传输安全:最大年龄=31536000;包括子域
X 内容类型选项:nosniff
X-XSS-保护:1;模式=块
我的密码是:
download(url) {
let downloadHeaders = new HttpHeaders({ 'content-type': 'application/xml; charset=UTF-8',
'authorization': "Bearer " + localStorage.getItem('token') });
downloadHeaders.append('Access-Control-Allow-Origin', '*');
this.httpClient.get('/rest/ui/download/product-part/' + url, { headers: downloadHeaders }).subscribe(response => {
console.log(response);
this.downLoadFile(response, "application/xml");
}
);
}
downLoadFile(data: any, type: string) {
let blob = new Blob([data], { type: type});
let url = window.URL.createObjectURL(blob);
let pwa = window.open(url);
if (!pwa || pwa.closed || typeof pwa.closed == 'undefined') {
alert( 'Please disable your Pop-up blocker and try again.');
}
}
有
new HttpHeaders({ 'content-type': 'application/xml; charset=UTF-8', 'authorization': "Bearer " + localStorage.getItem('token') });
在 console.log 中,文件显示正确。但下载不起作用:解析“myUrl”
期间的 Http 失败
如前所述,您必须将 reponseType: 'blob'
添加到您的获取选项中。
这是我在我的一个应用程序中处理它的方式,其中 const data
是从 downloadAttachment
返回的 blob。这可能不是最干净的方法,但它确实有效。
async downloadAttachment(id: number, filename: string) {
const data = await this.front.downloadAttachment(id);
const downloadURL = window.URL.createObjectURL(data);
const link = document.createElement('a');
link.target = '_blank';
link.href = downloadURL;
link.download = filename;
link.click();
}
检查是否有帮助。如果您有任何问题,请在这里提问。
我将下载一个 xml.gzip 文件,其中包含响应:
缓存控制:无缓存、无存储、max-age=0、必须重新验证
连接:保持活动状态
内容配置:附件;文件名=ERKENNUNGSMODELL_CI.9.221_part_1_of_1.xml
内容编码:gzip
内容长度:1323
内容-MD5:fIHw5FJ1KWkBHsZ+jbkuwg==
内容类型:application/xml
日期:2020 年 9 月 10 日,星期四 07:56:46 GMT
过期:0
保持活动:超时=60
编译指示:无缓存
严格传输安全:最大年龄=31536000;包括子域
X 内容类型选项:nosniff
X-XSS-保护:1;模式=块
我的密码是:
download(url) {
let downloadHeaders = new HttpHeaders({ 'content-type': 'application/xml; charset=UTF-8',
'authorization': "Bearer " + localStorage.getItem('token') });
downloadHeaders.append('Access-Control-Allow-Origin', '*');
this.httpClient.get('/rest/ui/download/product-part/' + url, { headers: downloadHeaders }).subscribe(response => {
console.log(response);
this.downLoadFile(response, "application/xml");
}
);
}
downLoadFile(data: any, type: string) {
let blob = new Blob([data], { type: type});
let url = window.URL.createObjectURL(blob);
let pwa = window.open(url);
if (!pwa || pwa.closed || typeof pwa.closed == 'undefined') {
alert( 'Please disable your Pop-up blocker and try again.');
}
}
有 new HttpHeaders({ 'content-type': 'application/xml; charset=UTF-8', 'authorization': "Bearer " + localStorage.getItem('token') });
在 console.log 中,文件显示正确。但下载不起作用:解析“myUrl”
期间的 Http 失败如前所述,您必须将 reponseType: 'blob'
添加到您的获取选项中。
这是我在我的一个应用程序中处理它的方式,其中 const data
是从 downloadAttachment
返回的 blob。这可能不是最干净的方法,但它确实有效。
async downloadAttachment(id: number, filename: string) {
const data = await this.front.downloadAttachment(id);
const downloadURL = window.URL.createObjectURL(data);
const link = document.createElement('a');
link.target = '_blank';
link.href = downloadURL;
link.download = filename;
link.click();
}
检查是否有帮助。如果您有任何问题,请在这里提问。