uniapp图片保存本地方法封装

24 阅读1分钟

这里兼容了ios系统,因为ios无法直接使用openSetting进行设置,所以提示让用户手动去设置就行

function saveImg(imgPath){
		// 检查用户是否已经授权了相册写入权限
		uni.getSetting({
		  success: function (res) {
		    if (!res.authSetting['scope.writePhotosAlbum']) {
		      // 如果用户未授权,主动请求授权
		      uni.authorize({
		        scope: 'scope.writePhotosAlbum',
		        message: '我们需要您的授权以保存图片到相册',
		        success: function () {
				uni.showToast({
		          		title: '授权成功,请重新保存',
		          		icon: 'none',
		          	})
		        },
		        fail: function () {
		          // 如果用户拒绝授权,可以提示用户去设置中开启权限
				if (uni.getSystemInfoSync().platform === 'ios') {
					uni.showToast({
						title:"请前往设置页面手动打开相册访问权限",
						icon:"none",
						}); 
				}else{
					uni.openSetting();
                                    }
		        }
		      });
		    } else {
		      // 如果用户已授权,直接进行需要权限的操作
			  uni.downloadFile({  
			      url: imgPath, // 图片的网络地址  
			      success: (res) => {  
			          if (res.statusCode === 200) {  
			              // 临时文件路径  
			              const tempFilePath = res.tempFilePath;  
			              // 接下来可以将这个tempFilePath保存到相册  
                                            // 保存图片到相册
                                            uni.saveImageToPhotosAlbum({
						  filePath:tempFilePath,
						  success: function () {
						  uni.showToast({
						  	title:"图片保存成功",
						  	icon:"none",
						  	});  
						  },
						  fail: function (err) {
						  	uni.showToast({
                                                            title:"图片保存失败,请重试",
                                                            icon:"none",
						  	}); 
						  }
                                            });
                                     }  
			      },  
			      fail: (err) => {  
			          console.error('下载图片失败:', err);  
			      }  
			  });
		    }
		  },
		  fail: function () {
		    // 获取权限设置失败,可以提示用户去设置中开启权限
		    if (uni.getSystemInfoSync().platform === 'ios') {
		    	uni.showToast({
		    		title:"请前往设置页面手动打开相册访问权限",
		    		icon:"none",
		    		}); 
		    }else{
		    	uni.openSetting();
		    }
		  }
		});
	}