vue移动端不同源下载图片问题
电脑谷歌调试没问题可以成功下载,但手机无法获取到文件 所以下载失败
<div class="btn f1" @click="downs">下载二维码</div>
downs() {
this.downloadIamge(this.siteConfig.wximage, '二维码');
},
downloadIamge(imgsrc, name) {
// 下载图片地址和图片名
const image = new Image();
// 解决跨域 Canvas 污染问题
image.setAttribute('crossOrigin', 'anonymous');
// eslint-disable-next-line func-names
image.onload = function () {
const canvas = document.createElement('canvas');
canvas.width = image.width;
canvas.height = image.height;
const context = canvas.getContext('2d');
context.drawImage(image, 0, 0, image.width, image.height);
const url = canvas.toDataURL('image/png'); // 得到图片的base64编码数据
const a = document.createElement('a'); // 生成一个a元素
a.download = name || 'photo'; // 设置图片名称
a.href = url; // 将生成的URL设置为a.href属性
a.click();
};
image.src = imgsrc;
this.$popup.open({
content: '下载成功',
});
},
——————电脑调试下载成功——————
——————手机下载获取失败——————
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
应该还是canvas.toDataURL的跨域造成的,很多webwiew的沙箱有安全设置;虽然你已经设置了
crossOrigin属性,两步建议:
相信这篇文章可以让你更加全面的了解
浏览器问题,换个火狐就能下载;