官方示例代码:
wx.downloadFile({
url: 'https://example.com/audio/123', //仅为示例,并非真实的资源
success (res) {
// 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调,业务需要自行判断是否下载到了想要的内容
if (res.statusCode === 200) {
wx.playVoice({
filePath: res.tempFilePath
})
}
}
})
下面是完整版代码(ps:添加是否授权开启相册)
let fileName = new Date().valueOf();
wx.downloadFile({
url: url, //下载链接
filePath: wx.env.USER_DATA_PATH + '/' + fileName + '.mp4',
success: res => {
console.log(res)
let filePath = res.filePath;
wx.saveVideoToPhotosAlbum({
filePath,
success: file => {
wx.showToast({title: '下载成功',icon: 'success',duration: 2000})
},
fail: err => {
this.loading = false
if (err.errMsg === 'saveVideoToPhotosAlbum:fail auth deny') {
wx.showModal({
title: '提示',
content: '需要您授权保存相册',
showCancel: false,
success: data => {
wx.openSetting({
success(settingdata) {
if (settingdata.authSetting['scope.writePhotosAlbum']) {
wx.showModal({
title: '提示',
content: '获取权限成功,再次点击下载即可保存',
showCancel: false,
})
} else {
wx.showModal({
title: '提示',
content: '获取权限失败,将无法保存到相册哦~',
showCancel: false,
})
}
},
})
}
})
}
}
})
},
fail:res=>{
this.loading = false
console.log(res)
}
})
当然,这并还没有结束
当你下载多的时候,可能会报出saveFile:fail the maximum size of the file storage limi或者uploadFile:fail exceed max upload connection count 10错误
原因是微信的使用限制
对于以上错误,可用FileSystemManager.readdir及FileSystemManager.unlink去处理
代码如下,具体参数及回调可以查看官方文档
//读取目录内文件列表
wx.getFileSystemManager().readdir({
dirPath: wx.env.USER_DATA_PATH,
success(res){
console.log(res)
},
fail(res){
console.log(res)
}
})
//删除文件
wx.getFileSystemManager().unlink({
filePath: wx.env.USER_DATA_PATH + '/' + fileName + '.mp4',
success(res){
console.log(res)
},
fail(res){
console.log(res)
}
})