var fs = wx.getFileSystemManager();
我通过wrteFile写一个PDF文件,然后用openDocument打开。发现写数据不对,会丢。
u8BufPdfSlice为ArrayBuffer,通过Uint8Array填写数据,u8BufPdfSlice通过LOG调试,显示的数据长度,数据值都是没有问题的。但写到文件里就丢数据,
console.log打印的数据如下,长度和数值都检查过,没有问题:
ArrayBuffer(387930) {}
但打开文件夹,看文件的详细信息,保存后文件的大小为241,731.丢不少数据
刚开始的时候,在PC模拟器和手机上,都丢数据。
后来,我在writeFile之后,openDocument之前,写入一段 wx.getFileInfo代码后,在success回调输出:
ManResGnH.js? [sm]:141 {errMsg: "getFileInfo:ok", size: 387930, digest: "c33fe26f255b291280131e0f3bcb05d3"}
写入的数据就正常了。也可以通过openDocument打开。
但这个仅在模拟器上是正常的,在手机上,长度还是不正常,会丢。
开始的时候,怀疑微信平台有问题,对ArrayBuffer的支持有BUG,但模拟器上又能成功一次。
现在是怀疑,writeFile有什么特别的要求?
注意:我的代码是通过状态机控制的,在writeFile写入调用success之前,不会执行后续操作,不存在同步和异步的干扰因素。
console.log(u8BufPdfSlice);
fs.writeFile({
filePath: wx.env.USER_DATA_PATH + '/hello.pdf',
data: u8BufPdfSlice,
encoding : 'binary',
success : res => {
timesFsmNext = 4;
that.setData({ "ttt": 'Ready' });
},
fail : res => {
timesFsmNext = 4;
that.setData({ "ttt": 'fux' });
}
});
你好,麻烦提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)