1.封装方法
在src/utils文件夹下新建文件previewDownFile.js
import axios from "axios";
import { ElMessage} from "element-plus";
export function previewBtn(url,fileName) { // url-下载预览地址 fileName-文件名
if (!fileName) { // 图片预览
window.open(url);
}else{ // 文件下载
axios({
url,
method: "GET",
responseType: "blob"
})
.then(res => {
const elink = document.createElement("a");
elink.download = fileName;
elink.style.display = "none";
elink.href = URL.createObjectURL(res.data);
document.body.appendChild(elink);
elink.click();
URL.revokeObjectURL(elink.href); // 释放URL对象
document.body.removeChild(elink);
ElMessage.success("下载成功")
})
.catch(() => {
ElMessage.error("下载失败!");
});
}
}
2.引入使用
import { previewDownFile } from "@/utils/previewDownFile";
<div v-for="(item,index) in row.omsReceiveDto?.attachmentDtos" :key="index">
<div @click="previewDownFile(item.attachmentUrl,item.attachmentName)">附件名称:{{ item.attachmentName }}</div>
</div>