uniapp项目H5嵌入APP的二维码保存至相册

网上找了几种方式,前提都是要通过uni.canvasToTempFilePath先获取到二维码图片的临时路径再进行后续的处理。

1.最开始正常使用uni提供的方法:

    			uni.canvasToTempFilePath(
					{
						canvasId: 'qrcode',
						fileType: 'jpg',
						success: result => {
							 uni.saveImageToPhotosAlbum({
							     filePath: result.tempFilePath,
							     success: res => {
							 		uni.showToast({
							 			title:'保存成功!',
							 			durations: 2000
							 		})
							     },
							     fail: err => {
							         uni.showToast({
							         	title:'保存失败!',
							         	durations: 2000,
							 			icon:'none'
							         })
							     }
							});
						},
						fail: err => {
							uni.showToast({
								title:'保存失败!',
								durations: 2000,
								icon:'none'
							})
						}
					}, 
					 this // 组件内使用必传当前实例
				);

此种方式中的uni.saveImageToPhotosAlbum不支持h5,所以出现了上线后二维码点击无效的情况,会报错提示h5不支持次方法。

2.使用qpp中h5提供的原生方法: 

    			plus.gallery.save( result.tempFilePath, function (res) {
					uni.showToast({
							title:'保存成功!',
							durations: 2000
					})
				}, function (res) {
					uni.showToast({
							title:'保存失败!',
							durations: 2000,
							icon:'none'
					})
				});

此种方式使用的plus.gallery.save(path,successFun,failFun)只支持在app环境下的图片保存,不支持嵌入app的H5页面。

3.使用原生a标签的方式进行下载

	const aEle = document.createElement('a')
	aEle.download = 'uqrcode'
	aEle.href = result.tempFilePath
	document.body.appendChild(aEle)
	aEle.click()
	aEle.remove()

此种方式可以分享至浏览器进行下载,无法直接保存至相册

4.更换下载思路,先进行图片预览,在通过自带的保存功能将图片保存至相册

		uni.previewImage({
		  urls:[result.tempFilePath],
		  success:()=>{
			this.controllTouch();
		  }
		})

此种方式是我最终使用的方式,对要下载的二维码进行了一个预览操作再进行了下载,类似于微信中的长按下载。

希望对大家有所帮助,才接触写app,水平有限,有不足的地方请大佬指出!!

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值