fix: 图片/文件读取改用 base64,修复 atob Latin1 错误

- 主进程新增 fs:readFileBase64 IPC,读 Buffer 直接返回 base64
- 图片读取从 atob 转换改为直接使用 readFileBase64
- .metona 备份导入同理修复
- 根因:fs:readFile 用 utf-8 编码读取二进制文件,UTF-8 多字节序列超出 Latin1 范围导致 atob 失败
This commit is contained in:
thzxx
2026-04-08 16:46:22 +08:00
parent 43f45cc09c
commit 21d774fab4
5 changed files with 18 additions and 8 deletions
+2 -2
View File
@@ -298,12 +298,12 @@ async function importSessions(filePath: string): Promise<void> {
try {
const bridge = (window as any).metonaDesktop;
const result = await bridge.fs.readFile(filePath);
const result = await bridge.fs.readFileBase64(filePath);
if (!result.success) {
showToast(`读取文件失败: ${result.error}`, 'error');
return;
}
// IPC 返回 base64 编码的二进制,转 ArrayBuffer
// 主进程返回 base64,直接解码为二进制
const binary = atob(result.content as string);
const bytes = new Uint8Array(binary.length);
for (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i);