我在使用自己的库上传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
,因为文件大小未知,直到读取最后一个块。
任何帮助?
答案 0 :(得分:2)
实际上,整个问题是我发送给服务器的块的大小。在the docs写道:
块大小限制:除了完成上载的最终块之外,所有块的大小必须是256 KB(256 x 1024字节)的倍数。如果你使用分块,重要的是保持块大小尽可能大,以保持上传效率。
一旦我更改了我发送的块的大小,问题就解决了。
答案 1 :(得分:0)
服务器在响应中告诉您它处理了多少字节。你需要注意这一点。也许有一个编码问题,你不能发送尽可能多的编码?或者尝试发送不同的块大小,也许是它收到的内容?