vue.js如何根据后台返回来的图片url进行图片下载

原创/朱季谦

最近在做一个前端vue.js对接的功能模块时,需要实现一个下载图片的功能,后台返回来的是一串图片url,试了很多种方法,发现点击下载时出来的效果,都是跳到一个新的图片网页,后来经过一番琢磨,终于解决了这个问题:

这是后台返回来的json数据(防止泄露重要信息IP地址打码了):

我在html里的引用是这样的:

html 复制代码
<a @click="downCom" >
     下载执照
     <i class="icon-down"></i>
 </a>

vue.js方法里的下载图片方法:

javascript 复制代码
   
      downCom() {
        let that = this;
        this.$http.files().then(res => {
          let hreLocal="";
          hreLocal = res.data.data.url;
          this.downloadByBlob(hreLocal,"pic")
       
        });
     },

下面这个方法,可以直接拿去用,直接把你的图片url传给这个方法,就可以实现vue.js来下载图片了。

javascript 复制代码
    downloadByBlob(url,name) {
      let image = new Image()
      image.setAttribute('crossOrigin', 'anonymous')
      image.src = url
      image.onload = () => {
        let canvas = document.createElement('canvas')
        canvas.width = image.width
        canvas.height = image.height
        let ctx = canvas.getContext('2d')
        ctx.drawImage(image, 0, 0, image.width, image.height)
        canvas.toBlob((blob) => {
         let url = URL.createObjectURL(blob)
         download(url,name)
         // 用完释放URL对象
         URL.revokeObjectURL(url)
       })
     }
   },
复制代码
调用的download(url,name)方法:
javascript 复制代码
 function download(href, name) {
   let eleLink = document.createElement('a')
   eleLink.download = name
   eleLink.href = href
   eleLink.click()
   eleLink.remove()
 }

完成上面的代码后,即可实现图片下载,而不是图片浏览啦。

最后成功实现点击即可下载图片,效果图如下:

相关推荐
东风西巷19 分钟前
猫眼浏览器:简约安全的 Chrome 内核增强版浏览器
前端·chrome·安全·电脑·软件需求
太阳伞下的阿呆20 分钟前
npm安装下载慢问题
前端·npm·node.js
533_33 分钟前
[vue3 echarts] echarts 动态数据更新 setInterval
vue.js·echarts
pe7er44 分钟前
Tauri 应用打包与签名简易指南
前端
前端搬砖仔噜啦噜啦嘞1 小时前
Cursor AI 编辑器入门教程和实战
前端·架构
会煮咖啡的猫1 小时前
编写 Flutter 游戏摇杆组件
flutter
Jimmy1 小时前
TypeScript 泛型:2025 年终极指南
前端·javascript·typescript
来来走走1 小时前
Flutter dart运算符
android·前端·flutter
moddy1 小时前
新人怎么去做低代码,并且去使用?
前端
风清云淡_A1 小时前
【Flutter3.8x】flutter从入门到实战基础教程(五):Material Icons图标的使用
前端·flutter