最近有用到微信小程序的 downloadFile 接口,但是在真机上出现了文件后缀为 unknown,导致文件保存失败,这里记录下
1. 下载文件
- 使用 downloadFile 下载 API
/* 直接这样写的话,会出现下载文件后缀名为 unknown 的情况 */
wx.downloadFile({
url: '',
success (res) {console.log(res.filePath);
}
})
- 改进后的下载保存
/* 使用时间戳为下载后的文件的名字 */
let fileName = new Date().valueOf();
wx.downloadFile({
/* url 为要下载的文件链接 */
url: '',
/* filePath 指定文件下载后存储的路径,wx.env.USER_DATA_PATH */
filePath: wx.env.USER_DATA_PATH + '/' + fileName + '.mp4',
success: res => {
let filePath = res.filePath;
wx.saveVideoToPhotosAlbum({
filePath,
success: file => {wx.hideLoading();
/* 删除缓存 */
let fileMgr = wx.getFileSystemManager();
fileMgr.unlink({
filePath: wx.env.USER_DATA_PATH + '/' + fileName + '.mp4',
success: function (r) {},})
},
fail: err => {wx.hideLoading();
/* 拒绝授权时显示 */
if (err.errMsg === 'saveVideoToPhotosAlbum:fail auth deny') {
wx.showModal({
title: '提示',
content: '需要您授权保存相册',
showCancel: false,
success: data => {
/* 打开权限设置 */
wx.openSetting({
success: setting => {if (setting.authSetting['scope.writePhotosAlbum']) {
wx.showModal({
title: '提示',
content: '获取权限成功, 再次点击下载即可保存',
showCancel: false,
})
} else {
wx.showModal({
title: '提示',
content: '获取权限失败,将无法保存到相册哦',
showCancel: false,
})
}
},
})
}
})
}
},
},
fail: err => {wx.hideLoading();
if (err.errMsg == 'downloadFile:fail createDownloadTask:fail url not in domain list') {
wx.showToast({
title: '服务器错误,请联系相关管理员',
icon: 'none'
})
}
},
complete: () => {wx.hideLoading();
}
})
2. 下载图片
- 下载图片的步骤和上面是一样的,就是在保存的时候,api 使用的不一样
wx.saveImageToPhotosAlbum({
filePath: '',
success: () => {}
})