(Angular) 在 IE 中下载 csv 文件需要帮助,它适用于 Chrome 和 Firefox
(Angular) Need help to download a cvs file in IE, it works on Chrome and Firefox
This works on chrome and firefox, but i need this in IE, i don't know
how to make it works. Internet Explorer console says "access denied"
descargarPlantilla() {
this.cargaMasivaService.generarCSVPLD().subscribe(
data => {
const blob = new Blob([data._body], { type: 'application/octet-stream' });
const contentDisposition = data.headers.get('content-disposition');
if (contentDisposition && contentDisposition.indexOf('attachment') !== -1) {
const filenameRegex = /filename[^;=\n]*=((['"]).*?|[^;\n]*)/;
const matches = filenameRegex.exec(contentDisposition);
}
this.modalMensajeService.modalExito('El Documento se ha descargado exitosamente');
},
error => {
this.modalMensajeService.modalError(error);
}
);
}
我不知道你是如何下载 csv 文件的,因为你没有在你的示例代码中显示它。但我认为错误是由于您使用了一些 IE 不支持的方法。
IE有its own API用于创建和下载文件,称为msSaveBlob
或msSaveOrOpenBlob
。您应该使用其中之一来下载文件。 msSaveBlob
和 msSaveOrOpenBlob
方法的区别在于前者只向用户提供 Save 按钮,而后者同时提供 Save 和一个 打开 按钮。
如果你有 blob 数据,你可以像这样使用 API:
if(window.navigator.msSaveOrOpenBlob) {
//IE11 & Edge, download function
window.navigator.msSaveOrOpenBlob(blob, fileName);
}
else{
//Other browsers, your download function
...
}
您也可以参考 and this thread了解更多信息。
This works on chrome and firefox, but i need this in IE, i don't know how to make it works. Internet Explorer console says "access denied"
descargarPlantilla() {
this.cargaMasivaService.generarCSVPLD().subscribe(
data => {
const blob = new Blob([data._body], { type: 'application/octet-stream' });
const contentDisposition = data.headers.get('content-disposition');
if (contentDisposition && contentDisposition.indexOf('attachment') !== -1) {
const filenameRegex = /filename[^;=\n]*=((['"]).*?|[^;\n]*)/;
const matches = filenameRegex.exec(contentDisposition);
}
this.modalMensajeService.modalExito('El Documento se ha descargado exitosamente');
},
error => {
this.modalMensajeService.modalError(error);
}
);
}
我不知道你是如何下载 csv 文件的,因为你没有在你的示例代码中显示它。但我认为错误是由于您使用了一些 IE 不支持的方法。
IE有its own API用于创建和下载文件,称为msSaveBlob
或msSaveOrOpenBlob
。您应该使用其中之一来下载文件。 msSaveBlob
和 msSaveOrOpenBlob
方法的区别在于前者只向用户提供 Save 按钮,而后者同时提供 Save 和一个 打开 按钮。
如果你有 blob 数据,你可以像这样使用 API:
if(window.navigator.msSaveOrOpenBlob) {
//IE11 & Edge, download function
window.navigator.msSaveOrOpenBlob(blob, fileName);
}
else{
//Other browsers, your download function
...
}
您也可以参考