一、需求:后端给过来一个base64格式的图片,将其保存到手机相册
二、实现步骤:
1. 指定图片的临时保存路径 const path = ${wx.env.USER_DATA_PATH}/image.png
,这个路径位于小程序的用户数据目录下,并设置图片的文件名为 image.png
。
2. 获取了小程序的文件系统管理器对象 fsm
,以便进行文件操作。
3. 使用 fsm.writeFile()
函数将Base64格式的图片数据写入到临时目录中。通过 base64.replace(/^data:image\/\w+;base64,/, '')
去除了Base64数据头部的描述信息,只保留实际的Base64
编码数据。
4. 写入成功后,弹出一个模态对话框。如果用户确认保存,就会触发 wx.saveImageToPhotosAlbum()
函数,将临时目录下的图片保存至手机相册中。
三、代码实现如下:
/** base64图片保存 */
base64ImageHandle(base64) {
// 指定图片的临时路径
const path = `${wx.env.USER_DATA_PATH}/image.png`
// 获取小程序的文件系统
const fsm = wx.getFileSystemManager()
// 把arraybuffer数据写入到临时目录中
fsm.writeFile({
filePath: path,
data: base64.replace(/^data:image\/\w+;base64,/, ''),
encoding: 'base64',
success: () => {
wx.showModal({
title: '保存图片',
content: '保存图片到手机相册?',
confirmColor: '#be3a34',
success: (result) => {
if (result.confirm) {
// 把临时路径下的图片,保存至相册
wx.saveImageToPhotosAlbum({
filePath: path,
success: () => {
wx.showToast({
title: "已保存到相册!",
icon: 'none',
duration: 2000
})
}
})
}
}
})
}
})
}