Google云端硬盘高级API - 插入文件导致异常:空响应

时间:2016-04-15 02:32:46

标签: google-apps-script google-drive-api

我是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:mediamultipart上)上传< 10Mb文件。但是,> 10Mb仍然失败,是否需要使用resumable

备注:我注意到有一个问题类似于我遇到的问题(Advanced Drive Service returning Empty Response Error when inserting file),但似乎没有结论,所以我希望有人可以帮忙修复这个问题

1 个答案:

答案 0 :(得分:0)

正如您所包含的类似帖子的答案中所述,建议使用uploadType=resumable,因为上传的文件大小很高。它几乎是您的问题的解决方案。根据{{​​3}}:

简单上传

  

用于快速传输较小的文件,例如 5 MB或更少

可恢复上传

  

可靠传输,对于较大的文件尤为重要。

希望这有助于(至少给你一个想法)。祝你好运。