我在Google表格脚本中收到了base64encoded图片。我可以通过记录
成功生成图像e.postData.contents
然后使用https://www.base64decode.org/解码并生成.jpg文件。但是当我尝试在google脚本中进行解码并将jpg文件写入驱动器时,它已损坏。它看起来很相似,但是插入了一些替换字符。这是我的代码:
function doPost(e) {
var decoded = Utilities.base64Decode(e.postData.contents, Utilities.Charset.UTF_8);
var blob = Utilities.newBlob(decoded);
DriveApp.createFile('img_'+date+'.jpg', blob.getDataAsString('Windows-1252'), MimeType.JPEG);
}
我也试过blob.getAs('image/jpeg')
,但这只返回一个包含文字Blob
的4字节文件。
有什么想法吗?我尝试过几个不同的字符集,Windows-1252
似乎给出了最接近的结果。
答案 0 :(得分:2)
这个示例脚本怎么样?使用此功能时,请定义date
。在我的测试中,我也可以确认base64编码的jpeg文件可以在https://www.base64decode.org/
解码。
当您更新doPost()
时,请注意以下事项。请将您的脚本重新部署为Web Apps作为新版本。如果未执行此操作,则不会更新已部署的Web应用程序的脚本。
function doPost(e) {
var decoded = Utilities.base64Decode(e.parameters.contents, Utilities.Charset.UTF_8);
var blob = Utilities.newBlob(decoded, "image/jpeg", 'img_'+date+'.jpg'); // Please define date.
DriveApp.createFile(blob);
}
如果您想使用curl尝试doPost()
,可以使用以下命令。当您使用它时,请输入base64编码文件和Web Apps URL的文件名。
curl -L -F "contents=`cat ### Filename ###`" "https://script.google.com/macros/s/#####/exec"
如果我误解了你的问题,我很抱歉。