vue实现点击下载图片到本地
vue实现点击下载图片到本地1,html中2,引入图片3,data中设置图片变量4、downloadCodeImg方法本文转自: linkhttps://blog.csdn.net/XZZ2222/article/details/872721251,html中<img :src="codeImg" alt="二维码图片" style="width:60%;"><...
·
vue实现点击下载图片到本地
本文转自: link https://blog.csdn.net/XZZ2222/article/details/87272125
1,html中
<img :src="codeImg" alt="二维码图片" style="width:60%;">
<span @click="downloadCodeImg()"></span>
2,引入图片
import codeIMG from '@/assets/code.jpg';
3,data中设置图片变量
data(){
codeImg:codeIMG,
}
4、downloadCodeImg方法
methods: {
downloadCodeImg(){
console.log('下载图片')
var a = document.createElement('a')
a.download = name || 'pic'
// 设置图片地址
a.href = codeIMG;
a.click();
},
}
注意:这里有一个坑。如果你的图片是从后台请求过来的,如果你的a标签的href是IP地址的话,此时a标签的download属性会失效,a会被当成一个普通的链接使用。
解决方法一:将IP地址换成域名。
解决方法二:通过后端转发,后端请求第三方资源,返回给前端,前端再保存文件。
当下载文件中存在jpg、txt等浏览器可以直接预览的文件,使用a标签即使加了download仍然会在浏览器中打开下载文件
我们可以将下载地址借助Blob转换成二进制,然后,作为a标签的href属性,配合download属性,实现下载
downloadCodeImg(){
let link = document.createElement('a')
let url = codeIMG //codeIMG 要下载的路径
// 这里是将url转成blob地址,
fetch(url).then(res => res.blob()).then(blob => { // 将链接地址字符内容转变成blob地址
link.href = URL.createObjectURL(blob)
console.log(link.href)
link.download = 'pic'
document.body.appendChild(link)
link.click()
})
},
更多推荐
已为社区贡献17条内容
所有评论(0)