收藏
回答

fs.readFile在安卓机上读取大文件时报错

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小游戏 Bug FileSystemManager.readFile 客户端 6.7.3 0 (xxxx.xx.xx)

- 当前 Bug 的表现(可附上截图)

使用微信开发者工具的真机调试功能调试安卓机时,在fs.readFile处如果读取的文件大于某定值(我们测试的结果是35m,15m都会卡住),就会卡住并报错:error readFile:fail:convert native buffer parameter fail. native buffer exceed size limit


- 预期表现

readFile成功读取文件


- 复现路径

使用提供的复现demo,用安卓机调试


- 提供一个最简复现 Demo

//下载文件指本地,然后读取资源

function wxDownLoad(path) {

  const fs = wx.getFileSystemManager();
  var filepath = wx.env.USER_DATA_PATH + "/downloadFile.zip";
  function failF(res) {
    console.log("error " + res.errMsg);
  }
 
  function getSize(res) {
    console.log("size =" + res.size);
  }
 
  function onReadFileSuccess(res) {
    console.log("onReadFileSuccess ");
  }
 
  function downloadSuccess(res) {
    console.log("downloadSuccess =" + filepath);
    fs.readFile({
      filePath: filepath,
      success: onReadFileSuccess, 
      fail: failF
    });
  }
 
  fs.removeSavedFile({ filePath: filepath });
 
  console.log("download file " + path)
  wx.downloadFile({
    url: path,
    success: downloadSuccess,
    filePath: filepath,
    fail: failF
  })
}
 
wxDownLoad('http://172.20.110.47:8080/downloadFile.zip');


-备注

  1. 如果readFile加encoding参数则可以读取,但是读取我们想要的是ArrayBuffer格式的结果,加了encoding读出的是string

  2. 模拟器上没问题,真机(目前只测了安卓机)上不行,跟手机性能应该没关系,测试机一个是华为mate9(4G),一个是小米8(6G),均会报错

回答关注问题邀请回答
收藏

2 个回答

  • 七夜
    七夜
    2022-07-08

    官方能回复下,遇到了同样的问

    2022-07-08
    有用
    回复 1
    • 流年之外
      流年之外
      2022-08-04
      10M是限制啊,加载的文件每个不能超过10M,需要拆成小的去加载
      2022-08-04
      回复
  • 悊
    2019-08-09

    请问最后这个问题怎么解决了?我读取11M的也不行

    2019-08-09
    有用
    回复
登录 后发表内容