pc、移動端、微信端 下載圖片踩坑

1:需求

點擊按鈕保存線上圖片到本地

2:解決思路

2.1 圖片服務器配置Access-Control-Allow-Origin(跨域)

2.2 創(chuàng)建 Image 對象,通過a標簽的download屬性實現(xiàn)下載(因為圖片不是本地圖片,所以需要轉換base64)

                       let file_url  = "https://xxx";
                       let image = new Image();
                       image.setAttribute("crossOrigin", "anonymous");
                       image.onload = function() {
                       let canvas = document.createElement("canvas");
                       canvas.width = image.width;
                       canvas.height = image.height;
                       let context = canvas.getContext("2d");
                       context.drawImage(image, 0, 0, image.width, image.height);
                       let url = canvas.toDataURL("image/png"); //得到圖片的base64編碼數(shù)據(jù)
                       let a = document.createElement("a"); // 生成一個a元素
                       let event = new MouseEvent("click"); // 創(chuàng)建一個單擊事件
                       a.download = "海報"; // 設置圖片名稱沒有設置則為默認
                       a.href = url; // 將生成的URL設置為a.href屬性
                       a.dispatchEvent(event); // 觸發(fā)a的單擊事件
                   };
                   image.src = file_url + '?random='+Math.random();   // 加個隨機數(shù)清空緩存
                   image.onerror =  (error) => {
                       // alert(JSON.stringify(error))
                      alert('圖片保存失敗')
                   }

3:踩坑

微信端,移動端不支持a標簽下載圖片!

4:解決思路

瀏覽器和微信保存圖片還是需要用戶長按保存,調起內置菜單來完成(暫無更好的方法)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容