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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM