我正在尝试从 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;
}
这是一个小而重要的修改...
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;
}
将图像转换并保存为 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.');
}
}
您的帖子似乎包含代码格式不正确的代码。请使用代码工具栏按钮或 CTRL+K 键盘快捷键将所有代码缩进 4 个空格。如需更多编辑帮助,请单击 [?] 工具栏图标。