一、正常情况
下载视频正常流程:先调用的downloadFile接口将文件下载在本地,然后用downLoadFile返回的临时路径作为参数去调用saveVideoToPhotosAlbum
wx.downloadFile({
url: 'https://example.com/audio/123', // 视频下载链接(非真实)
success (res) {
// 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调,业务需要自行判断是否下载到了想要的内容
if (res.statusCode === 200) {
// 将视频保存至相册中
wx.saveVideoToPhotosAlbum({
filePath: res.tempFilePath,
success (res) {
console.log(res.errMsg)
}
})
}
}
})
通过上述的解决方案可以实现用户下载视频,这种解决办法需要配置可信域名。
二、其他方案
用云函数和云储存来实现视频的下载
流程:
1、用户发起保存视频请求
2、调用云函数
--------下载视频至云存储
--------返回fileID
3、通过fileID从云存储下载视频至本地
3、通过本地视频的临时路径,将视频保存至用户相册
伪代码:
// 调用云函数获取fileID
wx.cloud.callFunction({
name: 'download',
data: {
file_url: video_url
}
});
.then(result => {
const { download_url } = result.result;
// 下载视频,下载云存储视频到本地会返回一个临时路径
wx.cloud.downloadFile({
fileID,
success: function (res) {
// 通过临时路径来保存视频到用户的手机里
wx.saveVideoToPhotosAlbum({
filePath: result.tempFilePath,
success: function (res) { resolve(res) },
fail: function (error) { reject(error); }
})
},
fail: function (error) { reject(error); }
});
});
})