【问题标题】:Google Drive Advanced API - Insert File cause Exception: Empty responseGoogle Drive Advanced API - 插入文件导致异常:空响应
【发布时间】:2016-04-15 02:32:45
【问题描述】:

我从 Google Script 更新并尝试建立一个支持匿名上传到云端硬盘的脚本 (https://ctrlq.org/code/19747-google-forms-upload-files)。

到目前为止,我所做的是能够运行脚本并发现folder.createFile(blob) 函数无法上传文件大小超过 10Mb 的文件。然后我发现使用高级驱动服务(驱动 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();
  }
}

它可以使用上面的代码上传media和multipart)。但是>10Mb还是失败了,还需要用resumable吗?

备注:我注意到有一个与我遇到的问题(Advanced Drive Service returning Empty Response Error when inserting file)类似的问题,但目前似乎还没有结论,所以我希望有人能帮助解决这个问题

【问题讨论】:

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


    【解决方案1】:

    正如您包含的类似帖子的答案中所述,建议使用uploadType=resumable,因为上传的文件很大。这几乎是您问题的解决方案。根据Upload Files document

    简单上传

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

    可恢复上传

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

    【讨论】:

    • 我之前尝试过使用uploadType=resumable。但是日志报这个错误Exception: Unsupported content with type: multipart/related我试过不设置mimeType参数,还是报这个错误
    • 我认为这与您原来的帖子不同。我建议发布一个新的,连同详细信息、您所做的事情、您检查的资源以及一些您认为可能对社区有用的代码 sn-ps 能够帮助您。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 2020-05-25
    • 1970-01-01
    相关资源
    最近更新 更多