使用Google Apps脚本Blob转换数据URI

时间:2019-05-11 16:18:02

标签: javascript google-apps-script base64

我正在尝试从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;
}

2 个答案:

答案 0 :(得分:0)

转换图像并将其另存为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.');
  }
}

答案 1 :(得分:0)

这是微小而重要的修改...

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;
}