我是Google Script的新手,并尝试建立支持匿名上传到云端硬盘(https://ctrlq.org/code/19747-google-forms-upload-files)的脚本。
到目前为止,我所做的是能够运行脚本并发现folder.createFile(blob)
函数无法上传文件大小超过10Mb。然后我发现使用Advanced Drive Service(Drive API)可以提供修复,因此我使用高级服务(Drive
而不是DriveApp
)(https://developers.google.com/drive/v2/reference/files/insert#http-request)进行更改。但是,它会响应错误Exception: Empty response
。
这是我的代码。
function uploadFiles(form) {
try {
var blob = form.file;
var contentType = blob.type;
var folderName = "Upload Folder";
var folder, folders = DriveApp.getFoldersByName(folderName);
if (folders.hasNext()) {
folder = folders.next();
} else {
folder = DriveApp.createFolder(folderName);
}
var file = {
title: blob.name,
mimeType: contentType,
parents:[{id:folder.getId()}]
};
var options = {
uploadType: "multipart"
};
file = Drive.Files.insert(file, blob, options);
return "File uploaded successfully " + file.fileSize;
} catch (error) {
return error.toString();
}
}
它可以使用上面的代码(在uplaodType:media
和multipart
上)上传< 10Mb文件。但是,> 10Mb仍然失败,是否需要使用resumable
?
备注:我注意到有一个问题类似于我遇到的问题(Advanced Drive Service returning Empty Response Error when inserting file),但似乎没有结论,所以我希望有人可以帮忙修复这个问题
答案 0 :(得分:0)
正如您所包含的类似帖子的答案中所述,建议使用uploadType=resumable
,因为上传的文件大小很高。它几乎是您的问题的解决方案。根据{{3}}:
简单上传
用于快速传输较小的文件,例如 5 MB或更少。
可恢复上传
可靠传输,对于较大的文件尤为重要。
希望这有助于(至少给你一个想法)。祝你好运。