使用Google Apps Script将云端硬盘图片转Base64编码遇阻求助
解决Google Apps Script中云端硬盘图片转Base64编码的问题
我来帮你搞定这个Base64编码的问题!你的代码逻辑大体是对的,但关键错误在于直接把Blob对象传给了Utilities.base64Encode()——这个方法需要的是字节数组(Byte[])或者字符串,而不是Blob本身,这就是你没能成功获取正确编码内容的原因。
修正后的完整代码
下面是调整后的可运行代码,我加上了注释说明关键改动:
const fileId = '1kLLkY_0TYs01o32q26uPQ_ndzaOQRmhi'; const file = DriveApp.getFileById(fileId); // 这部分获取文件基本信息的代码没问题,保留即可 const docName = file.getName(); const docSize = file.getSize(); const docType = file.getMimeType(); // 关键修正:先将Blob转换为字节数组,再执行Base64编码 const fileBlob = file.getBlob(); const base64Encoded = Utilities.base64Encode(fileBlob.getBytes()); // 如果你需要URL安全的Base64编码(适合上传服务器时避免特殊字符冲突),可以用下面这句替代上面的编码行: // const base64EncodedWebSafe = Utilities.base64EncodeWebSafe(fileBlob.getBytes()); Logger.log('图片Base64编码结果:', base64Encoded); // Logger.log('URL安全Base64编码结果:', base64EncodedWebSafe);
为什么原来的代码失败?
Utilities.base64Encode()的参数类型要求是字节数组或字符串,直接传入Blob对象时,方法无法正确解析其二进制内容,自然得不到有效的Base64编码。通过fileBlob.getBytes()把Blob的二进制内容转换成字节数组后,就能被方法正确处理了。
后续上传服务器的小提示
如果你的服务器需要Data URI格式的Base64(比如前端展示或某些API要求的data:image/jpeg;base64,xxxxxx格式),可以直接拼接MIME类型和编码结果:
const dataUri = `data:${docType};base64,${base64Encoded}`; Logger.log('Data URI格式:', dataUri);
这样处理后,你就能得到正确的Base64编码内容,顺利完成后续的服务器上传操作啦!
内容的提问来源于stack exchange,提问作者Elangamani
相关产品推荐
相关产品推荐

