(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用于创建和下载文件,称为msSaveBlobmsSaveOrOpenBlob。您应该使用其中之一来下载文件。 msSaveBlobmsSaveOrOpenBlob 方法的区别在于前者只向用户提供 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了解更多信息。