//导出-下载按钮
export(id) {
let item = {
params: {
id: id,
},
name: "文件名",
fileType: '.xls',
method: 'post',
url: "",
}
this.downloadFile(item) //下载
},
//下载文件
downloadFile(item) {
var fileType = this.checkFileType(item.fileType);
if (fileType == "") {
Message({
message: '此文件格式不支持下载',
type: 'error',
showClose: true
})
return;
}
var fileName = item.name;
axios({
method: item.method,
url: item.url,
data: item.params,
headers: {
"Content-type": "application/json",
"Authorization": localStorage.getItem("token"),
},
responseType: "blob"
})
.then(res => {
console.log("文件流数据", res);
var blob = new Blob([res.data], {
type: fileType
});
var downloadElement = document.createElement('a');
var href = window.URL.createObjectURL(blob); //创建下载的链接
downloadElement.href = href;
downloadElement.download = fileName + item.fileType; //下载后文件名document.body.appendChild(downloadElement);
document.body.appendChild(downloadElement);
downloadElement.click(); //点击下载
document.body.removeChild(downloadElement); //下载完成移除元素
window.URL.revokeObjectURL(href); //释放掉blob对象
})
},
//下载文件前的格式判断
checkFileType(fileType) {
fileType = fileType.substring(fileType.lastIndexOf(".") + 1).toLowerCase();
var fileTypeBlob = "";
switch (fileType) {
case 'jpg':
case 'png':
fileTypeBlob = "image/jpeg";
break;
case 'doc':
case 'docx':
fileTypeBlob = "application/msword";
break;
case 'pdf':
fileTypeBlob = "application/pdf";
break;
case 'xls':
case 'xlsx':
fileTypeBlob = "application/vnd.ms-excel";
break;
case 'ppt':
case 'pptx':
fileTypeBlob = "application/vnd.ms-powerpoint";
break;
case 'txt':
fileTypeBlob = "text/plain";
break;
case 'xmind':
break;
case 'mp4':
fileTypeBlob = "application/mp4"
break;
case 'avi':
fileTypeBlob = "video/x-msvideo"
break;
default:
fileTypeBlob = "";
}
return fileTypeBlob;
},
vue js 下载文件
最新推荐文章于 2024-06-18 21:46:07 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)