如题,运营曾给出一个问题,小程序分享到朋友圈的功能部分用户出现保存图片失败的情况。
查了下原因出问题的都是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 ® {
},
})
},
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)
}
}
})
},