You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js+Vue从Google Drive下载SQLite备份文件损坏问题求助

解决Google Drive下载SQLite文件损坏问题

你的问题核心是用文本方式处理二进制文件:SQLite属于二进制格式,response.text()会把下载的二进制字节按UTF-8编码解析成字符串,这个转换过程会破坏原始二进制数据,最终写入的文件自然损坏,且编码转换会导致体积异常增大。

修正后的代码

async restoreGoogleDriveDatabase(fileId) {
    const url = `https://www.googleapis.com/drive/v3/files/${fileId}?alt=media`;
    const options = {
        method: 'GET',
        headers: {
            'Authorization': 'Bearer ' + this.getToken()
        },
    };

    const response = await fetch(url, options);
    const arrayBuffer = await response.arrayBuffer();
    // 将浏览器端ArrayBuffer转为Node.js Buffer,适配二进制写入
    const buffer = Buffer.from(arrayBuffer);

    const path = require('path').join(window.process.env.ProgramData, 'Home Inventory', 'HomeInventory1.db');
    fs.writeFile(path, buffer, (err) => {
        if (err) throw err;
        console.warn('文件恢复完成');
    });
}

关键改动说明

  • 替换response.text()为response.arrayBuffer():直接获取原始二进制字节流,彻底避免编码转换对数据的破坏
  • 新增Buffer.from(arrayBuffer):把浏览器环境的ArrayBuffer转换成Node.js的Buffer类型,确保fs模块能正确写入二进制内容
  • 用path.join拼接完整文件路径:避免手动拼接字符串时的转义错误,路径处理更可靠

内容的提问来源于stack exchange,提问作者DRW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 23:10:27