Retool上传txt文件到GCS出现atob解码错误如何解决?
Retool生成TXT文件上传GCS atob编码报错解决方案
报错根因
该报错是因为Retool的GCS上传查询要求传入Base64编码的文件内容,你直接传入了纯文本字符串,触发atob解码逻辑时无法识别非Base64格式的输入,导致报错。
解决步骤
- 先将原始纯文本内容转成UTF-8编码的Base64字符串,Retool内置了工具方法可以直接调用,无需额外引入依赖:
假设你的原始内容存储在变量rawFruitContent中,值为:
转换代码为:Lemon Banana Pineappleutils.arrayBufferToBase64(new TextEncoder().encode(rawFruitContent)) - 将转换得到的Base64字符串填入GCS上传查询的「Upload Body(上传内容)」字段,不要直接填写原始纯文本。
配置校验项
执行上传前确认以下配置正确,避免出现换行丢失、乱码问题:
- GCS查询操作类型选择
Upload file - Content-Type字段填写
text/plain; charset=utf-8 - 若GCS查询配置页存在「Encode upload body」开关,需保持关闭状态,避免二次编码导致内容异常。
完整测试用例
你可以直接用以下代码在Retool的临时状态/JS查询中运行测试,确认输出内容符合要求:
// 原始待上传内容,保留原生换行 const rawFruitContent = `Lemon Banana Pineapple` // 转换为GCS上传要求的Base64格式 const uploadContent = utils.arrayBufferToBase64(new TextEncoder().encode(rawFruitContent)) // 将uploadContent作为参数传入GCS上传查询触发即可
配置完成后触发上传,生成的TXT文件会完整保留原始换行,每行对应一个水果名称。
内容的提问来源于stack exchange,提问作者Super Kai - Kazuya Ito
相关产品推荐
相关产品推荐

