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