uniapp长按保存图片和视频到本地

1,305 阅读1分钟

1、给元素绑定长按事件

<view @longpress='handleDownload'></view>

2、使用uni.getSetting判断是否有权限,如果没有则请求权限

			//长按下载
			handleDownload(url,type) {
				let _that = this
				uni.getSetting({
				   success(res) {
					   if(!res.authSetting['scope.writePhotosAlbum']) {
						   uni.authorize({
						       scope: 'scope.writePhotosAlbum',
						       success() {
								   _that.savaToLocal(url,type)
						       },
							   fail() {
								   uni.showToast({
								   	title: '授权失败',
								   	duration: 2000
								   });
							   }
						   })
					   }
					   else {
						   _that.savaToLocal(url,type)
					   }
				   }
				})
			},

3、通过uni.downloadFile下载文件,得到本地文件地址,通过uni.saveImageToPhotosAlbum和uni.saveVideoToPhotosAlbum将图片和视频保存至手机相册

//保存至本地
			savaToLocal(url,type) {
				uni.downloadFile({
					url: url, 
					success: (res) => {
						if (res.statusCode === 200) {
							if(type == 'img') {
								uni.saveImageToPhotosAlbum({
									filePath: res.tempFilePath,
									success: function () {
										uni.showToast({
											title: '保存成功',
											duration: 2000
										});
									},
									fail: function(err) {
										console.log('fail============',err);
										uni.showToast({
											title: '保存失败',
											duration: 2000
										});
									}
								});
							}
							else {
								uni.saveVideoToPhotosAlbum({
									filePath: res.tempFilePath,
									success: function () {
										uni.showToast({
											title: '保存成功',
											duration: 2000
										});
									},
									fail: function(err) {
										console.log('fail============',err);
										uni.showToast({
											title: '保存失败',
											duration: 2000
										});
									}
								});
							}
						}
					},
					fail(err) {
						console.log('fail==========',err);
						uni.showToast({
							title: '保存失败',
							duration: 2000
						});
					}
				});
			},