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

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

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

相关推荐
郑州光合科技余经理1 小时前
海外O2O系统源码剖析:多语言、多货币架构设计与二次开发实践
java·开发语言·前端·小程序·系统架构·uni-app·php
arvin_xiaoting6 小时前
OpenClaw学习总结_I_核心架构_8:SessionPruning详解
前端·chrome·学习·系统架构·ai agent·openclaw·sessionpruning
工程师老罗7 小时前
Image(图像)的用法
java·前端·javascript
swipe8 小时前
把 JavaScript 原型讲透:从 `[[Prototype]]`、`prototype` 到 `constructor` 的完整心智模型
前端·javascript·面试
问道飞鱼8 小时前
【前端知识】React 组件生命周期:从底层原理到实践场景
前端·react.js·前端框架·生命周期
CHU7290358 小时前
定制专属美丽时刻:美容预约商城小程序的贴心设计
前端·小程序
浩~~9 小时前
反射型XSS注入
前端·xss
AwesomeDevin9 小时前
AI时代,我们的任务不应沉溺于与 AI 聊天,🤔 从“对话式编程”迈向“数字软件工厂”
前端·后端·架构
harrain9 小时前
antvG2折线图和区间range标记同时绘制
前端·javascript·vue.js·antv·g2
德育处主任Pro9 小时前
从重复搭建到高效生产,RollCode的H5开发新范式
前端