使用uploadType Resumable更新Google Drive API V3中的现有文件内容

时间:2016-04-15 14:40:22

标签: json upload google-api drive

我一直关注Drive API V3 Resumable Uploads Docs并成功上传了具有Resumable会话的新文件。首先是对" https://www.googleapis.com/upload/drive/v3/files"的POST请求正确指定所有标头(Content-type:" application / json; charset = UTF-8"将元数据作为json发送),然后从响应标头" Location"中检索会话URI。 ,然后PUT请求Session URI,文件内容为Body。

我正在尝试按照文档提供的有关更新当前Drive文件数据的提示,但这非常令人困惑。引用文档:

  

如果请求成功,服务器将使用HTTP 201 Created以及与此资源关联的任何元数据进行响应。如果可恢复会话的初始请求是PUT,则要更新现有资源,成功响应将是200 OK,以及与此资源相关联的任何元数据。

我发送的获取会话URI的请求是:

PUT /upload/drive/v3/files/{fileID}?uploadType=resumable HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer {authToken}
Content-Type: application/json; charset=UTF-8
X-Upload-Content-Type: {FileToBeSent-Content-Type}
X-Upload-Content-Length: {FileToBeSent-Content-Length}

{ "name" : "myfile.ext"}

但我得到的回答是#34; Not Found",有没有办法为现有文件获取可恢复的会话URI?我是否正确发送了FileID,还是应该在第二次请求会话URI时执行此操作?

1 个答案:

答案 0 :(得分:0)

引用文档Migrate to Google drive API v3

  

所有更新操作现在都使用PATCH而不是PUT

这就是如何在V3中完成可恢复上传到现有文件:

首先是对文件URL的补丁请求:

PATCH /upload/drive/v3/files/{fileID}?uploadType=resumable HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer {authToken}
Content-Type: application/json; charset=UTF-8
X-Upload-Content-Type: {FileToBeSent-Content-Type}
X-Upload-Content-Length: {FileToBeSent-Content-Length}

{ "name" : "myfile.ext"}

然后按照文档中的说明进行操作,从响应中检索会话URI并通过PUT将文件发送给它。