Php 503使用cURL发送第一块Google文档可恢复上传后的响应

Php 503使用cURL发送第一块Google文档可恢复上传后的响应,php,curl,google-docs-api,google-drive-api,Php,Curl,Google Docs Api,Google Drive Api,我有一个PHP应用程序,它为用户提供了一些Google文档集成,我正在尝试添加将文件直接上传到用户的文档帐户的功能(我正在使用PHP/cURL实现我自己的功能,因为我的要求很简单,我不想仅仅为了这一个功能而与Zend Framework发生冲突) 我正在按照和的指示行事 ,在我尝试发送第二个数据块之前,一切似乎都正常,在这一点上,我总是从服务器接收到503 Service Unavailable响应 以下是事件的完整顺序: 1) 我将带有以下标题的帖子发送到上载URI: Host: docs.g

我有一个PHP应用程序,它为用户提供了一些Google文档集成,我正在尝试添加将文件直接上传到用户的文档帐户的功能(我正在使用PHP/cURL实现我自己的功能,因为我的要求很简单,我不想仅仅为了这一个功能而与Zend Framework发生冲突)

我正在按照和的指示行事 ,在我尝试发送第二个数据块之前,一切似乎都正常,在这一点上,我总是从服务器接收到503 Service Unavailable响应

以下是事件的完整顺序:

1) 我将带有以下标题的帖子发送到上载URI:

Host: docs.google.com
GData-Version: 3.0
Authorization: Bearer (token removed for security reasons, but it's there and correct)
Content-Length: 0
Slug: gmk_google_upload_test.txt
X-Upload-Content-Type: text/plain
X-Upload-Content-Length: 2652
服务器响应为:

HTTP/1.1 200 OK
Server: HTTP Upload Server Built on Jul 30 2012 11:18:04 (1343672284)
Location: https://docs.google.com/feeds/upload/create-session/default/private/full?convert=false&upload_id=AEnB2Uoa4ba2XrKG58GU3uTSzKUKsQu_NfOUvyYDqW6iXwmHgBPiJsi1fg-RhxMVT7jAfd1o73fUtBaaZ1uLkwNwzT04NxQbuQ
Date: Tue, 31 Jul 2012 16:00:13 GMT
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Cache-Control: no-cache, no-store, must-revalidate
Content-Length: 0
Content-Type: text/html; charset=UTF-8
到目前为止,一切顺利

2) 我使用以下标题将响应中的第一个块(512字节)放入URL:

Host: docs.google.com
Content-Length: 512
Content-Type: text/plain
Content-Range: bytes 0-511/2652
服务器响应为:

HTTP/1.1 308 Resume Incomplete
Server: HTTP Upload Server Built on Jul 30 2012 11:18:04 (1343672284)
Date: Tue, 31 Jul 2012 16:00:14 GMT
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Cache-Control: no-cache, no-store, must-revalidate
Content-Length: 0
Content-Type: text/html; charset=UTF-8
这可能是我的问题的开始,因为我没有像文档中描述的那样从服务器接收到范围标头。然而,似乎有些事情对我来说一定很有效,我才能得到308份简历的完整回复

3) 当我使用(我认为)正确的标题和下一个区块的范围信息发送下一个区块时:

Host: docs.google.com
Content-Length: 512
Content-Type: text/plain
Content-Range: bytes 512-1023/2652
我总是从服务器获得以下响应:

HTTP/1.1 503 Service Unavailable
Server: HTTP Upload Server Built on Jul 30 2012 11:18:04 (1343672284)
Date: Tue, 31 Jul 2012 16:00:14 GMT
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Cache-Control: no-cache, no-store, must-revalidate
Content-Length: 0
Content-Type: text/html; charset=UTF-8
我尝试过不同类型的文件、块大小等,但总是得到相同的结果。奇怪的是,如果我发送请求尝试获取服务器已接收的字节数(根据上面的文档链接):

PUT HTTP/1.1
主持人:docs.google.com
内容长度:0
内容范围:字节*/100

我收到了308份简历的不完整回复(如预期),但仍然没有范围标题。我肯定我在某个地方做了些傻事,但我的头撞到墙上的时间已经够长了,我看不见了。

你考虑过使用更新的驱动器API吗? 不是基于Zend框架,文档包括和

如果您仍然想自己实现可恢复上传协议,那么您应该看看新的API(包括Google Drive API)是如何支持该协议的:


刚刚用
谷歌硬盘解决了同样的问题

set size chunk = 256 * 1024

谢谢@Claudio——我将尝试一下Google Drive API。我仍然想找出这里出了什么问题,因为我有一种感觉,我可能会遇到与Google Drive相同的问题(机制看起来类似),但我们会看到:)。我有完全相同的问题,但无法切换到较新的API。你最终解决了这个问题吗?这个问题解决了吗?
set size chunk = 256 * 1024