我从后端发送带有快递的docx:
module.exports = (req, res) => {
res.status(200).sendFile(__dirname+"/output.docx")
}
我打电话给它,然后从角落下载为blob:
$http({
url: '/api_cv/cv/gen',
method: "PUT",
responseType: 'blob'
}).success(function (data, status, headers, config) {
var blob = new Blob([data], { type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' });
var fileName = headers('content-disposition');
saveAs(blob, 'file.docx');
}).error(function (data, status, headers, config) {
console.log('Unable to download the file')
});
适用于Chrome和Firefox。在safari中,将打开一个新选项卡,不会下载任何文件。在IE中(由于我有一台Mac,通过Azure RemoteApp测试),我得到“您当前的安全设置不允许下载此文件”。
SaveAs is from https://github.com/eligrey/FileSaver.js/
是否有另一种方法可以在所有现代浏览器和IE10 +中使用?
答案 0 :(得分:0)
您可以尝试以下方法,而不是使用saveAs
:
var url = window.URL || window.webkitURL;
var downloadUrl = url.createObjectURL(blob);
var a = doc.createElement("a");
a.style.display = "none";
if (typeof a.download === "undefined") {
window.location = downloadUrl;
} else {
a.href = downloadUrl;
a.download = fileName;
doc.body.appendChild(a);
a.click();
}
然后在完成后移除锚点。只是想知道它是否是保存部分的问题,我对FileSaver没有多少经验,但这是我过去做过的事情