文档下载(blob流下载)

307 阅读1分钟
 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流。

曾经遇到这个问题,每次下载之后都打不开,