Google Drive API可恢复上传问题 - 响应标头中Range的大小错误

时间:2015-01-30 12:46:55

标签: google-drive-api

我在使用自己的库上传Google云端硬盘时遇到了问题。

问题在于,当我发送PUT请求时,第一个块包含以下标题:

[0] => Content-Range: bytes 0-1054143/*
[1] => Content-Type: application/zip
[2] => Content-Length: 1054144

Google API会返回以下内容:

HTTP/1.1 308 Resume Incomplete
Range: bytes=0-1048575
X-Range-MD5: 59ef685eb8e1ca4c5ebab6f11ab9f7c3
Date: Fri, 30 Jan 2015 12:34:35 GMT
Server: UploadServer ("Built on Jan 7 2015 15:51:42 (1420674702)")
Content-Length: 0
Content-Type: text/html; charset=UTF-8
Alternate-Protocol: 443:quic,p=0.02

我发送的范围(0-1054143)与API商店(0-1048575)之间存在差异。

因此,一旦将所有块发送到API,它们返回的最后一个范围就不同于我尝试上传的文件的大小。

我在*中使用Content-Range,因为文件大小未知,直到读取最后一个块。

任何帮助?

2 个答案:

答案 0 :(得分:2)

实际上,整个问题是我发送给服务器的块的大小。在the docs写道:

  

块大小限制:除了完成上载的最终块之外,所有块的大小必须是256 KB(256 x 1024字节)的倍数。如果你使用分块,重要的是保持块大小尽可能大,以保持上传效率。

一旦我更改了我发送的块的大小,问题就解决了。

答案 1 :(得分:0)

服务器在响应中告诉您它处理了多少字节。你需要注意这一点。也许有一个编码问题,你不能发送尽可能多的编码?或者尝试发送不同的块大小,也许是它收到的内容?