已解决~ wx.saveImageToPhotosAlbum 方法在部分安卓手机上出现图片保存失败的bug。
发布于 5 年前 作者 guiyingyu 3592 次浏览 来自 分享

如题,运营曾给出一个问题,小程序分享到朋友圈的功能部分用户出现保存图片失败的情况。

查了下原因出问题的都是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)

}

}

})

},

回到顶部