使用 Google Apps Script Blob 转换数据 URI

问题描述 投票:0回答:3

我正在尝试从 Google Apps 脚本中的数据 URI 上传并保存图像。除了设置的文件类型之外,一切都有效。

我已根据 Apps 脚本文档尝试了 newBlob 的所有变体。

function doUpload(dataURI) {

var folder = DriveApp.getFolderById("xxxxxxxxxxxxxxxxxxxxxx");
var type = (dataURI.split(";")[0]).replace('data:','');
var imageUpload = Utilities.base64Decode(dataURI.split(",")[1]);
var blob = Utilities.newBlob(imageUpload, type, "nameOfImage");
folder.createFile(blob);

return true;
}
javascript google-apps-script base64
3个回答
3
投票

这是一个小而重要的修改...

function doUpload(dataURI) {

var folder = DriveApp.getFolderById("xxxxxxxxxxxxxxxxxxxxxx");
var type = (dataURI.split(";")[0]).replace('data:','');
var imageUpload = Utilities.base64Decode(dataURI.split(",")[1]);
var blob = Utilities.newBlob(imageUpload, type, "nameOfImage.png");
folder.createFile(blob);

return true;
}

1
投票

将图像转换并保存为 DataURI 的

我使用 UrlFetch 从 url 获取图像。如果您没有地方托管它们,只需将它们放入 Google 照片库并从那里复制网址即可。这样,您可以在使用标准图像编辑器转换它们之前,对网络就绪的图稿进行所有图像处理。

function convImageUrl(url){
  var url=url || "http://jimesteban.com/images/mimincoopers.png";
  var blob=UrlFetchApp.fetch(url).getBlob();
  var b64Url='data:' + blob.getContentType() + ';base64,' + Utilities.base64Encode(blob.getBytes());
  return b64Url;
}

function saveDataURIInFile(filename,datauri,type) {
  Logger.log('filename: %s\ndatauri: %s\ntype: %s\n',filename,datauri,type);
  if(filename && datauri && type) {
    var folder=DriveApp.getFolderById(getGlobal('MediaFolderId'));
    var files=folder.getFilesByName(filename);
    while(files.hasNext()) {
      files.next().setTrashed(true);
    }
    var f=folder.createFile(filename,datauri,MimeType.PLAIN_TEXT);
    return {name:f.getName(),id:f.getId(),type:type,uri:DriveApp.getFileById(f.getId()).getBlob().getDataAsString()};
  }else{
    throw('Invalid input in saveDataURIInFile.');
  }
}

0
投票

您的帖子似乎包含代码格式不正确的代码。请使用代码工具栏按钮或 CTRL+K 键盘快捷键将所有代码缩进 4 个空格。如需更多编辑帮助,请单击 [?] 工具栏图标。

© www.soinside.com 2019 - 2024. All rights reserved.