vue3实现图片的下载

写一个工具类,放到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';

相关推荐
YAY_tyy4 分钟前
综合实战:基于 Turfjs 的智慧园区空间管理系统
前端·3d·cesium·turfjs
生活在一步步变好i5 分钟前
模块化与包管理核心知识点详解
前端
午安~婉5 分钟前
整理Git
前端·git
千寻girling6 分钟前
Vue.js 前端开发实战 ( 电子版 ) —— 黑马
前端·javascript·vue.js·b树·决策树·随机森林·最小二乘法
程序员爱钓鱼7 分钟前
Node.js 编程实战:博客系统 —— 数据库设计
前端·后端·node.js
m0_741412248 分钟前
Webpack:F:\nochinese_path\React_code\webpack
前端·react.js·webpack
毕设源码-邱学长9 分钟前
【开题答辩全过程】以 基于Web技术的知识付费平台为例,包含答辩的问题和答案
前端
困惑阿三9 分钟前
利用 Flexbox 实现无需媒体查询(Media Queries)的自动响应式网格。
开发语言·前端·javascript
朝阳3913 分钟前
前端项目的 【README.md】详解
前端
浩冉学编程14 分钟前
html中在某个父元素动态生成列表子元素,添加点击事件,利用事件委托
前端·javascript·html