在Google Appscript中将二进制docx数据转换为有效Base64字符串
Google Apps Script 中docx二进制数据转Base64的可行方案
失效原因
你当前使用的代码返回短无效字符串的核心原因是:Utilities.base64Encode() 方法直接传入原始二进制字符串时,Google Apps Script会默认按UTF-8编码解析输入内容。docx属于二进制格式,包含大量非UTF-8合规的字节,会被识别为无效字符直接截断,最终输出的编码结果自然不可用。
正确实现步骤
需要先将原始二进制数据封装为Blob对象,再提取字节数组传入编码方法,避免编码解析异常,代码示例如下:
function run() { var inputData = Eventbus.get('encodedData'); // 接收二进制输入数据 // 封装为指定MIME类型的Blob,避免格式识别错误 var docxBlob = Utilities.newBlob( inputData, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' ); // 传入字节数组完成Base64编码 var convertedData = Utilities.base64Encode(docxBlob.getBytes()); Eventbus.set('decodedData', convertedData); }
补充说明
- 如果需要生成可直接用于前端下载、预览的Data URI格式,可在编码结果前拼接前缀:
var dataUri = 'data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,' + convertedData - 正常转换后的Base64字符串长度约为原docx文件大小的4/3,可通过长度判断转换是否成功。
内容的提问来源于stack exchange,提问作者Saurabh Kulkarni
相关产品推荐
相关产品推荐

