IE11 使用 blob 保存在 angular 中损坏的已下载 .xlsx 文件(在本地工作)

IE11 saves downloaded .xlsx files corrupted in angular using blob (works locally)

当我从服务器下载 .xlsx 文件时,下载的文件没有正确的结构(样式表、工作表等),而是一个扩展名为 .xlsx 的二进制文件。

注意: 它在 Chrome、Firefox、Edge 和本地甚至在 IE11 上都能完美运行,我已将 Internet Explorer 的安全设置设置为与本地和本地相同远程网站。

这是服务器创建响应的方式:

const buffer = json2xls(values, { fields: fields });
res.end(buffer, 'binary');

这是客户端保存获取的数据的方式:

downloadFile(selectedReport) {
const blob = new Blob([selectedReport.blob()], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
FileSaver.saveAs(blob, `result.xlsx`);
}

我试过替换:

FileSaver.saveAs(blob, result.xlsx);

与:

window.navigator.msSaveBlob(blob, result.xlsx);

但结果还是一样

注意:损坏的result.xlsx文件内容与服务器发送的buffer相同

您检查过您的 http 服务器 MIME 类型了吗? .xlsx 的应该是 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet