h5页面点击保存图片到手机本地相册(通用,传值就能用)
前言:本来用uniapp开发h5页面,想点击图片保存到本地,但是,uniapp并不支持这个方法,所以下面这个是通过百度找各种资源然后弄出来的方法直接上代码,有注释:<image mode="aspectFit" :src="xxxxxx"></image><button style="margin-top: 10px;" @click="savePic">保存到
·
前言:本来用uniapp开发h5页面,想点击图片保存到本地,但是,uniapp并不支持这个方法,所以下面这个是通过百度找各种资源然后弄出来的方法
直接上代码,有注释:
<image mode="aspectFit" :src="xxxxxx"></image>
<button style="margin-top: 10px;" @click="savePic">保存到本地</button>
savePic(Url){
Url = this.dialogImgUrl //图片路径,也可以传值进来
var triggerEvent = "touchstart"; //指定下载方式
var blob=new Blob([''], {type:'application/octet-stream'}); //二进制大型对象blob
var url = URL.createObjectURL(blob); //创建一个字符串路径空位
var a = document.createElement('a'); //创建一个 a 标签
a.href = Url; //把路径赋到a标签的href上
//正则表达式,这里是把图片文件名分离出来。拿到文件名赋到a.download,作为文件名来使用文本
a.download = Url.replace(/(.*\/)*([^.]+.*)/ig,"$2").split("?")[0];
/* var e = document.createEvent('MouseEvents'); //创建事件(MouseEvents鼠标事件)
e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); //初始化鼠标事件(initMouseEvent已弃用)*/
//代替方法。创建鼠标事件并初始化(后面这些参数我也不清楚,参考文档吧 https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/MouseEvent)
var e = new MouseEvent('click', ( true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null));
//派遣后,它将不再执行任何操作。执行保存到本地
a.dispatchEvent(e);
//释放一个已经存在的路径(有创建createObjectURL就要释放revokeObjectURL)
URL.revokeObjectURL(url);
/*
//这段好像并不影响,所以我不用,注释掉
var imgs = document.getElementsByTagName("img");
for(var i = 0,o;o = imgs[i];i++){
o.addEventListener(triggerEvent,function(){
var newurl = this.getAttribute("src");
saveAs(newurl);
},false);
} */
},
附上参考文档:https://developer.mozilla.org/zh-CN/docs/Web/API/Document/createEvent
更多推荐
已为社区贡献1条内容
所有评论(0)