google-apps-script - Google Script base64 解码并将文件保存到云端硬盘

标签 google-apps-script google-drive-api base64 google-sheets-api

我在 Google 表格脚本中收到了 base64 编码的图像。我可以通过登录成功生成图像

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 似乎给出了最接近的结果。

最佳答案

这个示例脚本怎么样?当您使用它时,请定义date。在我的测试中,我还可以确认 base64 编码的 jpeg 文件可以在 https://www.base64decode.org/ 上解码。

并且当你更新doPost()时,请注意如下。请将您的脚本作为新版本重新部署到 Web 应用程序。如果不执行此操作,则不会更新部署的 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 示例:

如果你想使用 curl 来尝试你的 doPost(),你可以使用下面的命令。使用时,请输入base64编码文件的文件名和Web Apps URL。

curl -L -F "contents=`cat ### Filename ###`" "https://script.google.com/macros/s/#####/exec"

如果我误解了你的问题,我很抱歉。

关于google-apps-script - Google Script base64 解码并将文件保存到云端硬盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46482550/

相关文章:

google-drive-api - Google Drive 上的 Beta 版应用

r - 如何使用 httr 发布多部分/相关内容(适用于 Google Drive API)

php - 在浏览器中将base64字符串下载为png

javascript - 使用脚本中的数据,通过排序或警告框的形式编辑 Google 电子表格中的数据

google-apps-script - 如何导入多个 csv 文件(格式相同)并在 Google 电子表格中自动创建图表?

google-apps-script - Google Sheet 将行复制到新工作表 IF 公式触发器

java - 使用DatatypeConverter.parseBase64Binary的异常

javascript - 我无法弄清楚为什么谷歌应用脚​​本发送的是实际文件而不是副本

ruby - Google 云端硬盘根文件夹文件未找到错误

react-native - 尝试从 react-native 中的 wav 文件创建 base64 字符串以存储在服务器上