请问最后这个问题怎么解决了?我读取11M的也不行
fs.readFile在安卓机上读取大文件时报错- 当前 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'[代码][代码]);[代码] -备注 如果readFile加encoding参数则可以读取,但是读取我们想要的是ArrayBuffer格式的结果,加了encoding读出的是string 模拟器上没问题,真机(目前只测了安卓机)上不行,跟手机性能应该没关系,测试机一个是华为mate9(4G),一个是小米8(6G),均会报错
2019-08-09