写一个工具类,放到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("下载失败!");
});
}
}
引入
import { previewDownFile } from "@/utils/previewDownFile";
调用
<div class="downLoadImg svgBox">
<el-icon size="30" @click="previewBtn(item,item.projectName+'_附件'+(index+1))">
<Download />
</el-icon>
</div>
vue3导入icon图标
import { Download } from '@element-plus/icons-vue';