收藏
回答

FileSystemManager中writeFile丢数据的问题?

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' });
  }
});
回答关注问题邀请回答
收藏

1 个回答

登录 后发表内容
问题标签