需求:把生成回来的分享太阳码存到本地,减少获取图片请求,提高效率
因为小程序生成的太阳码是个二进制流
所有根据文档按下面的方法存储图片到本地
fileSystem.writeFile({
filePath: wx.env.USER_DATA_PATH + '/图片名称',
data: API返回的二进制流,
encoding: 'binary',
})
一气呵成,开发者工具无法显示,打开真机调试,没问题,由于项目比较紧,真机正常就上线了
然后噩梦开始,经常有人反馈说生成不了太阳码,然后我这边换了一堆手机都无法复现问题
后来找了台老安卓,问题真的出现了(内心问候张小龙N遍)
解决方案:
fileSystem.writeFile({
filePath: wx.env.USER_DATA_PATH + '/图片名称',
data: wx.arrayBufferToBase64( API返回的二进制流 ),
encoding: 'base64',
})
结论:储存时要先把流转化成base64格式,再存到本地
噩梦结束
PS:小程序坑能少点吗
用上面的两个方法测试都不行,基础库,2.3.0.
安卓机能生成图片,但图片打不开,已损坏。