diff --git a/disassembly/disassembly.js b/disassembly/disassembly.js index 1775769bd918a5ef14798198ffc62a8d54830dd8..4d355741bb7fa228c9b0fe782842189c4841fac6 100644 --- a/disassembly/disassembly.js +++ b/disassembly/disassembly.js @@ -97,8 +97,15 @@ function checkElf(session_id, data) { function save(session_id, data) { try { // 假设 `decoder` 是已定义的 TextDecoder 实例 - // 解析前端发送的 JSON 数据 - const { file_name, buffer_index, total_size, is_last, buffer } = JSON.parse(decoder.decode(data));; + const separatorIndex = data.indexOf('|'.charCodeAt(0)); + // 提取 JSON 字符串长度部分 + const jsonLengthStr = decoder.decode(data.subarray(0, separatorIndex)); + const jsonLength = parseInt(jsonLengthStr, 10); + // 解析 JSON 字符串 + const jsonStringBytes = data.subarray(separatorIndex + 1, separatorIndex + 1 + jsonLength); + const { file_name, buffer_index, total_size, is_last} = JSON.parse(decoder.decode(jsonStringBytes)); + // 文件数据从 JSON 结束位置之后开始 + const buffer = data.subarray(separatorIndex + 1 + jsonLength); logger.info(`save file, file name: ${file_name}, index: ${buffer_index}`); // 将 `buffer` 转换为 Uint8Array