标签:canvas 浏览器 image oA h5 点击 let 按钮 图片
在开发uni-app项目中有一个需求是点击按钮,下载多张图片,图片路径是后台返回的。(uni-app中saveImageToPhotosAlbum不可用)-----------------------以下代码是我参考别人的方法以及自己亲身实践得来的
方法一:
var oA = document.createElement("a"); oA.download = index||'photo'; // 设置下载的文件名,默认是'下载' oA.href = url---------------------------此处为你的图片地址 document.body.appendChild(oA); oA.click(); oA.remove();
该方法,在pc以及手机浏览器都可以下载,在手机浏览器(qq浏览器)中可以将图片保存在相册 测试手机(苹果13)
但是当保存多张图片时,只能保存中间的一张,pc和浏览器均是
方法二:
let image = new Image(); // 解决跨域 Canvas 污染问题 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 img = canvas.toDataURL("image/png"); //得到图片的base64编码数据 let a = document.createElement("a"); // 生成一个a元素 let event = new MouseEvent("click"); // 创建一个单击事件 a.download = name|| "photo"; // 设置图片名称,-------------你传递的图片名称 a.href = img; // 将生成的URL设置为a.href属性 a.dispatchEvent(event); // 触发a的单击事件 }; image.src = url;----------------你的图片地址
该方法,在pc以及手机浏览器都可以下载,在手机浏览器(qq浏览器)中可以将图片保存在相册 测试手机(苹果13)-------偶尔会报跨域问题
单张图片没问题,多张图片有时会报跨域
方法三
var iframe = document.createElement('iframe'); iframe.src =url iframe.style = "display:none"; document.body.appendChild(iframe);
该方法,在pc可以下载,在手机浏览器(qq浏览器)中点击无反应,在苹果自带的safari浏览器中可以下载到浏览器中, 测试手机(苹果13)
单张多张均可下载
标签:canvas,浏览器,image,oA,h5,点击,let,按钮,图片 来源: https://www.cnblogs.com/bingchenzhilu/p/16117956.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。