Google 云端硬盘 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中使用*,因为在读取最后一个块之前文件大小是未知的。

有什么帮助吗?

事实上,整个问题在于我发送到服务器的块的大小。在文档中写道:

区块

大小限制:所有区块的大小必须是 256 KB(256 x 1024 字节)的倍数,但完成上传的最后一个区块除外。如果使用分块,请务必保持区块大小尽可能大,以保持上传效率。

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

服务器在响应中告诉您它处理了多少字节。 你需要注意这一点。 也许存在编码问题,您发送的没有您想象的那么多?或者尝试发送不同的块大小,也许它收到了什么?

最新更新