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
});
}
});
},