vue+elementui下载附件
elementui下载附件一般是在点击文件后发生的,应在el-upload组件的on-preview函数中实现第一次使用FileSaver插件下载附件,一到上线就会报错找了百度也没有找出答案,就换种方法this.$axios({url: file.url,//后端返回文件的路径type: "get",responseType: "...
·
elementui下载附件一般是在点击文件后发生的,应在el-upload组件的on-preview函数中实现
第一次使用FileSaver插件下载附件,一到上线就会报错
找了百度也没有找出答案,就换种方法
this.$axios({
url: file.url,//后端返回文件的路径
type: "get",
responseType: "blob"
}).then(res => {
if (!res) {
this.$message.error("下载失败");
} else {
if (!!window.ActiveXObject || "ActiveXObject" in window) {
var filename =file.name;//文件的名字
var type = "text/plain; charset=UTF-8";
var obj = res.data;
var blob =
typeof File === "function"
? new File([obj], filename, { type: type })
: new Blob([obj], { type: type });
if (typeof window.navigator.msSaveBlob !== "undefined") {
window.navigator.msSaveBlob(blob, filename);
} else {
var URL = window.URL || window.webkitURL;
var downloadUrl = URL.createObjectURL(blob);
if (filename) {
var a = document.createElement("a");
if (typeof a.download === "undefined") {
window.location = downloadUrl;
} else {
a.href = downloadUrl;
a.download = filename;
document.body.appendChild(a);
a.click();
}
} else {
window.location = downloadUrl;
}
}
} else {
let url = window.URL.createObjectURL(res.data);
let link = document.createElement("a");
link.style.display = "none";
link.href = url;
var filename = file.name;
link.setAttribute("download", filename);
document.body.appendChild(link);
link.click();
}
}
}).catch(error => {
console.log(error);
});
下面是之前的写法:
import FileSaver from‘file-saver’
FileSaver.saveAs(file.url, file.name,{type: "text/plain;charset=utf-8"})
总是报错,不知道哪里出现问题了。。
更多推荐
已为社区贡献9条内容
所有评论(0)