已解决~ wx.saveImageToPhotosAlbum 方法在部分安卓手机上出现图片保存失败的bug。
如题,运营曾给出一个问题,小程序分享到朋友圈的功能部分用户出现保存图片失败的情况。 查了下原因出问题的都是android用户。 打日志后发现: [图片] 原因是:部分安卓手机调用 wx.downloadFile方法下载网络资源图片后 会出现下载的图片临时路径的扩展名是unknown。所以后续在调用wx.saveImageToPhotosAlbum 方法时候会报错:saveimagetophotosalbum:fail invalid file type [图片] -----------------------------分------------------------割------------------------线--------------------------------------------- 下面是解决方案:(自定义临时资源路径)关键部分已经红色大字体加粗了 savePic(imgpic) { // 保存function wx.showLoading({ title: '下载中...' mask: true }) let fileName = newDate().valueOf(); wx.downloadFile({ url: imgpic, /* filePath指定文件下载后存储的路径,wx.env.USER_DATA_PATH */ filePath: wx.env.USER_DATA_PATH + '/' + fileName + '.jpg' success: res => { console.log('downloadFileres', res) let filePath = res.filePath; wx.saveImageToPhotosAlbum({ filePath, success: file => { console.log('file', file) wx.hideLoading(); wx.showModal({ content: '保存成功,您可以将保存的图片分享到朋友圈奥~' showCancel: false }) /* 删除缓存 */ let fileMgr = wx.getFileSystemManager(); fileMgr.unlink({ filePath: wx.env.USER_DATA_PATH + '/' + fileName + '.jpg' success: function (r) { }, }) }, fail: err => { wx.hideLoading(); }, }) }, complete: () => { wx.hideLoading(); } }) } tips:剩余点击保存按钮方法也一起贴一下: gosave() { // 点击保存到本地 var that = this var imgpic = this.data.imgpic wx.getSetting({ success(res) { console.log('res', res) if (!res.authSetting['scope.writePhotosAlbum']) { wx.authorize({ scope: 'scope.writePhotosAlbum' success() { console.log('授权成功' }, fail() { wx.showModal({ content: '您未授权奥,现在去授权?' success(res) { if (res.confirm) { wx.openSetting({ }) } } }) } }) } else { that.savePic(imgpic) } } }) },