1***@qq.com
1***@qq.com
  • 发布:2023-03-10 11:46
  • 更新:2023-03-16 22:31
  • 阅读:994

【报Bug】3.7.3版本编译器使用对应打包SDK会导致plus.io.requestFileSystem中的readAsDataURL方法识别了换行符

分类:HBuilderX

产品分类: HbuilderX

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Windows 11 家庭中文版 21H2

HBuilderX类型: 正式

HBuilderX版本号: 3.7.3

手机系统: Android

手机系统版本号: Android 11

手机厂商: 华为

手机机型: 荣耀10,harmonyOS 2.0.0系统,是鸿蒙不是安卓系统,手机OS系统那栏我乱选的安卓12

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

plus.io.requestFileSystem(plus.io.PRIVATE_WWW, function (fs) {
fs.root.getFile(
"/static/OCE_HMET_1.2.1_CODE.bin",
{
create: false,
},
function (fileEntry) {
fileEntry.file(function (file) {
var reader = new plus.io.FileReader();
reader.readAsDataURL(file); // 以URL格式读取文件
reader.onload = function (evt) {
let strs = "";
console.log("文件内容", evt);
if (uni.getSystemInfoSync().platform == "ios") {
// 苹果设备前缀为34个字符需要提前去除,安卓为37个
strs = evt.target.result.substring(34).replace("\r\n", "");
} else {
strs = evt.target.result.substring(37).replace("\r\n", "");
}
let arrayBuffer = uni.base64ToArrayBuffer(strs); // 转换为arrayBuffer格式
// 此处无法调用this指向,使用原生uni方法才可行
let newArrBuff = arrayBuffer.slice(
(item.page - 1) 1025,
item.page
1025
);
};
});
}
);
});

操作步骤:

plus.io方法读取了二进制文件,
再使用redaAsDataURL方法读取为base64格式
便可以发现其中二进制的内容,新版本识别了换行符

预期结果:

新版本打包SDK不再识别换行符\r\n

实际结果:

新版本识别了换行符

bug描述:

新版本3.7.3版本的HbuilderX编译器使用了最新版本的打包SDK,
读取二进制文件时,使用readAsDataURL方法转为base64格式,
其中会导致识别了换行符 "\r\n"
而旧版本的打包SDK不会出现此类情况,导致我们APP出现bug

2023-03-10 11:46 负责人:DCloud_Android_ST 分享
已邀请:

最佳回复

DCloud

DCloud

HBuilderX 3.7.7.20230316-alpha 已修复。

DCloud_Android_ST

DCloud_Android_ST

收到预计下个版本修复 临时方案过滤"\r\n"

要回复问题请先登录注册