download(id, name) { //当为文档类型时,文档下载 this.$confirm(`您确认要下载《${name}》吗?`, "下载确认", { confirmButtonText: "确定", cancelButtonText: "取消", }) .then(() => { this.$axios({ method: "post", url: `/doc/down?id=${id}`, responseType: "blob", }).then((res) => { if(res.headers['hasfile']=='1'){ const a = document.createElement("a"); const { data, headers: { filename }, } = res; a.download = decodeURIComponent(filename) a.href = window.URL.createObjectURL(data);
document.body.appendChild(a); a.click(); document.body.removeChild(a); }else { this.$alert('该文件不存在,请刷新重试', '温馨提示', { confirmButtonText: '确定' }) } }); }) .catch(() => { this.$message({ type: "info", message: "已取消下载", }); }); },
注意:设置responseType: "blob",即收到返回的二进制数据之后自动转换成blob流。
曾经遇到这个问题,每次下载之后都打不开,