前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vue.js如何根据后台返回来的图片url进行图片下载

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

作者头像
朱季谦
修改2019-09-19 20:26:46
9.3K0
修改2019-09-19 20:26:46
举报

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

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

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

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

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

代码语言:javascript
复制
 1  
 2     downCom() {
 3       let that = this;
 4       this.$http.files().then(res => {
 5         let hreLocal="";
 6         hreLocal = res.data.data.url;
 7         this.downloadByBlob(hreLocal,"营业执照")
 8      
 9       });
10     },

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

代码语言:javascript
复制
 1   downloadByBlob(url,name) {
 2     let image = new Image()
 3     image.setAttribute('crossOrigin', 'anonymous')
 4     image.src = url
 5     image.onload = () => {
 6       let canvas = document.createElement('canvas')
 7       canvas.width = image.width
 8       canvas.height = image.height
 9       let ctx = canvas.getContext('2d')
10       ctx.drawImage(image, 0, 0, image.width, image.height)
11       canvas.toBlob((blob) => {
12         let url = URL.createObjectURL(blob)
13         download(url,name)
14         // 用完释放URL对象
15         URL.revokeObjectURL(url)
16       })
17     }
18   },

调用的download(url,name)方法:

代码语言:javascript
复制
1 function download(href, name) {
2   let eleLink = document.createElement('a')
3   eleLink.download = name
4   eleLink.href = href
5   eleLink.click()
6   eleLink.remove()
7 }

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-09-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档