由於再日常開發中,公司往往會有一個圖片服務器。在要求前端實現圖片下載時往往會有非同源的問題。
非同源使用download屬性默認會預覽而不是下載。
由於圖片服務器往往是允許跨域的,所以我們在這里用ajax get請求的方式,獲取圖片blob文件,再由
window.URL.createObjectURL
(專門用來將blob或者file讀取成一個url的可被img,video,audio 識別顯示出來的url)
1 function downloadImg(src,name){ 2 var x=new XMLHttpRequest();
//禁止瀏覽器緩存;否則會報跨域的錯誤 3 x.open("GET", src+'?t='+new Date().getTime(), true); 4 x.responseType = 'blob'; 5 x.onload=function(e){ 6 var url = window.URL.createObjectURL(x.response) 7 var a = document.createElement('a'); 8 a.href = url 9 a.download = name 10 a.click() 11 } 12 x.send(); 13 }
<a href="javascript:;" id="download" onclick='downloadImg(url,name)'>下載</a>