微信小程序保存视频到本地相册和保存时downloadFile:fail:url not in domain list

本文围绕小程序视频详情页的视频下载功能展开。首先介绍查询用户授权的三种情况及对应处理方式,接着说明下载视频需先获取临时路径,再保存到相册并删除临时文件。最后提及保存时可能出现的问题及解决办法,如配置合法域名、替换http开头的url等。

最近写个视频详情页,有下载视频的功能,百度一堆文档,但是千篇一律的都看不太明白,总归是太菜了,从头开始研究一番

第一步

需要查询用户的授权情况,获取用户设置 wx.getSetting()
返回值中只会出现小程序已经向用户请求过的权限。
authSetting.png

授权总结了三种情况:

1.用户从来没有授权过,res.authSetting[’scope.writePhotosAlbum’]===undefined
需要wx.authorize:提前向用户发起授权请求。调用后弹出弹框向用户询问授权,如果用户已经授权,就不会弹出弹框,直接success

wx.authorize({
   
   
    scope:'scope.writePhotosAlbum',
    success(){
   
   
        //保存视频
    },
    fail(){
   
   
        //提示:拒绝授权后不能保存视频到相册    
    }
})

2.用户授权过之后又关闭授权,!res.authSetting[’scope.writePhotosAlbum’]
需要wx.openSetting:调起客户端小程序设置界面,返回用户设置的操作结果。设置界面只会出现小程序向用户请求过的权限。(openSetting在模拟器不起作用,需要真机调试)

wx.openSetting({
   
   
    success(res){
   
   
        //用户手动打开保存视频权限
          if(res.authSetting['scope.writePhotosAlbum']){
   
   
              //保存视频
              return          
          }
          wx.showToast({
   
   title:'未授权,无法保存到相册',icon:'none'})
    },
    fail(){
   
   
        //提示授权失败
    }
})

3.用户已经授权,可以直接保存

第二步

下载视频
1.要先下载到本地获取临时路径

let fileName = new Date().valueOf();
wx.downloadFile({
   
   
   url: link,
 	filePath: wx.env.USER_DATA_PATH + '/' + fileName + '.mp4',
  	success(res<
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值