uniapp保存图片到相册

uniapp微信小程序保存图片到系统相册

相关API

saveimagetophotosalbum

authorize


步骤

  • 判断用户是否已授权,已授权返回成功,执行保存图片到相册;
  • 如果用户拒绝授权,再次点击保存图片时,引导用户开启权限;

js文件

根据自身需求调整,这里放在js文件[download.js],方便调用

const app = getApp()

export default {
	methods: {
        /**
         * 保存图片
         */
        saveImage() {
			let that = this;
			// 向用户发起授权请求
			uni.authorize({
				scope: 'scope.writePhotosAlbum',
				success: () => {
                    // 已授权
					that.downLoadImg();
				},
				fail: () => {
                    // 拒绝授权,获取当前设置
					uni.getSetting({
						success: (result) => {
							if (!result.authSetting['scope.writePhotosAlbum']) {
								that.isAuth()
							}
						}
					});
				}
			})
		},
        /**
         * 下载资源,保存图片到系统相册
         */
        downLoadImg() {
			uni.showLoading({
				title: '加载中'
			});
			uni.downloadFile({
				url: app.globalData.downLoadUrl,
				success: (res) => {
					uni.hideLoading();
					if (res.statusCode === 200) {
						uni.saveImageToPhotosAlbum({
							filePath: res.tempFilePath,
							success: function() {
								uni.showToast({
									title: "保存成功",
									icon: "none"
								});
							},
							fail: function() {
								uni.showToast({
									title: "保存失败,请稍后重试",
									icon: "none"
								});
							}
						});
					}
				},
				fail: (err) => {
					uni.showToast({
						title: "失败啦",
						icon: "none"
					});
				}
			})
		},
        /*
         * 引导用户开启权限
         */
		isAuth() {
			uni.showModal({
				content: '由于您还没有允许保存图片到您相册里,无法进行保存,请点击确定允许授权',
				success: (res) => {
					if (res.confirm) {
						uni.openSetting({
							success: (result) => {
								console.log(result.authSetting);
							}
						});
					}
				}
			});
		},
    }
}

使用

template
<template>
	<button class="saveBtn white" @click="savePosterTap">保存至相册</button>
</template>

js
savePosterTap() {
    app.globalData.downLoadUrl = this.$util.img(this.posterUrl); // url
    
    this.saveImage();
},
  • 7
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值