通过Google Drive API使用“可恢复”uploadType更新Google云端硬盘中的文件

时间:2014-02-12 01:28:12

标签: ios google-drive-api

现在我正在使用适用于iOS的GoogleDrive API(我不使用Objective-C客户端库),我只能通过“media”uploadType,文件数据和/或文件的元数据更新文件数据“ multipart“uploadType,但我无法使用”resumable“uploadType更新任何内容。

通过google的API引用,请求更新文件使用方法PUT,但请求使用“resumable”uploadType在第一个请求中使用方法POST仅发送文件的元数据,第二个请求用PUT方法发送文件数据,这个让我很困惑。有人对T_T有什么建议吗?

2 个答案:

答案 0 :(得分:2)

最后我做到了:

请求1:

标题:

PUT https://www.googleapis.com/upload/drive/v2/files?uploadType=resumable
Content-Type: application/json; charset=UTF-8
X-Upload-Content-Type: video/mp4
X-Upload-Content-Length: 7421411

身体:

{
   Meta-data of files to upload
}

从响应1的位置标头收到upload_id后,调用第二个请求:

标题:

PUT https://www.googleapis.com/upload/drive/v2/files?uploadType=resumable&upload_id=adZc...
Content-Length: 7421411
Content-Type: video/mp4

身体:

{
   bytes of file to upload
}

答案 1 :(得分:0)

您使用的是XMLHTTP请求还是使用Google Drive SDK API。 request = gapi.client.request();和request.exeute()。

最重要的问题是你能发送下一个块吗?使用完整的字节集进行可恢复上载有什么意义。可恢复上传的要点是使用分块 上传可以从下一个块恢复,即技术上在下一个块上,文件大小应该增加。我不介意服务器是否给我收到的字节数。我需要知道文件是否在增加。如果文件大小增加,我可以简单地将要上传的字节偏移到filesize和我发送的数据的差异。

如果根据您的操作定义,默认情况下支持可恢复上传。您所要做的就是使用: 'path':'/ upload / drive / v2 / files /'+ NewFileID,

NewFileID可以是任何旧的或新的文件ID。它仍将使用新字节更新文件。

所以,我不确定你做的有什么好处?你有没有弄清楚如何发送下一个块(默认为256KB)并确认谷歌驱动器上的文件大小更改为一个值: First ChunkSize + + New ChunkSize +

First ChunkSize:你放入的初始块。例256KB   :这是由Google云端硬盘分配的空间,用于存储其元数据。 新的ChunkSize:你的第二个Chunck大小(再次默认为256KB) :这又是Google云端硬盘存储的元数据,用于存储下一个块 因此,处理两者的总大小应该> 512KB