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()
 }

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

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

相关推荐
paopaokaka_luck4 小时前
基于Spring Boot+Vue的减肥健康管理系统设计和实现【原创】(BMI算法,协同过滤算法、图形化分析)
java·vue.js·spring boot·后端
计算机学姐4 小时前
基于大数据的高校新生数据可视化分析系统
大数据·vue.js·python·mysql·信息可视化·django·pip
A_ugust__5 小时前
C# ASP.NET CORE web api 实现AES加密解密
前端·c#·asp.net
iknow1815 小时前
【前端安全】js逆向之微信公众号登录密码
开发语言·前端·javascript
面包会有的,牛奶也会有的。6 小时前
python测试开发---前后端交互Axios
开发语言·前端·vue.js·交互
Her...6 小时前
electron教程(三)窗口设置
前端·javascript·electron
frankz616 小时前
新版统信UOS系统 electron sandbox与GPU兼容问题
前端·javascript·electron
_.Switch7 小时前
边缘计算与 Python Web 应用:从理论到实践
开发语言·前端·人工智能·python·架构·log4j·边缘计算
2401_857297917 小时前
秋招内推2025--招联金融
java·前端·算法·金融·求职招聘
优雅永不过时·8 小时前
three.js 通过着色器实现热力图效果
前端·javascript·智慧城市·three.js·热力图·着色器