a标签的download属性

a标签加上downlaod属性后,就可完成对href属性链接文件的下载,但仅仅是限于同源文件,如果是非同源,download属性会失效。

 

无download属性的时候,a标签的默认行为是链接跳转进行预览,而针对浏览无法预览的文件,也可达到下载的效果。

 

怎么解决下载非同源文件的问题?? 例如image图片

 

方法: 通过canvas绘制,生成临时路径 (

data协议路径  // data:image/jpeg;base64,/9j/4AAQSkZJRgABAQ...9oADAMBAAIRAxEAPwD/AD/6AP/Z"

),这个路径就是一个同源路径,然后传入下载函数进行下载。 

 

 1 let img = new Image();
 2 img.setAttribute('crossOrigin', 'anonymous')
 3 img.src = data.entry;
 4 img.onload = function(data) {
 5     let canvas = document.createElement('canvas');
 6     canvas.width = img.width;
 7     canvas.height = img.height;
 8     let context = canvas.getContext('2d');
 9     context.drawImage(img, 0, 0, canvas.width, canvas.height);
10     let url = canvas.toDataURL('image/png');
11     downLoadByLink(url,"小程序码");
12 }
const downLoadByLink = (url, filename) =>{
    //如果提供filename,则filename需要包含扩展名
    var link,
        evt;
    
    link = document.createElement('a');
    link.href = url;
    filename && link.setAttribute('download', filename);
    if(document.fireEvent) {
        window.open(link.href);
    }else {
        evt = document.createEvent('MouseEvents');
        evt.initEvent('click', true, true);
        link.dispatchEvent(evt);
    }
};

 

转载于:https://www.cnblogs.com/yunnex-xw/p/10621174.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值