我正在尝试使用 jQuery 和 Google Cloud Storage v1beta2 Json API 将文件分块上传到Google云端存储中。我正按照API documentation中的描述执行以下步骤。
第一步:发布获取UploadId的请求
POST /upload/storage/v1beta2/b/test-bucket-01/o?uploadType=resumable&name=args-master.zip HTTP/1.1 Host: www.googleapis.com Connection: keep-alive Content-Length: 0 Accept: */* Origin: http://www.trial.com Authorization: Bearer ya29.1.AADtN_UptViwI44N8A3Pg89q3lKS7ZesTqYplm0whTdTJFOj0MHjtp-yM7dB8GzfJk62lIuo
在响应中,我获得了包含UploadId的位置标题
HTTP/1.1 200 OK Location: https://www.googleapis.com/upload/storage/v1beta2/b/test-bucket-01/o?uploadType=resumable&name=args-master.zip&upload_id=AEnB2UoOYm9JYDAPNPisFKG5yheFdRF8oVaxpRHg62BGGBVr2Ue-sg3fbOmg1Ol-PFSXY60aPcl_hDaJP9176ZF6DPaCDAyDkg Vary: Origin Access-Control-Allow-Origin: http://www.trial.com Access-Control-Expose-Headers: Cache-Control, Content-Length, Content-Type, Date, Expires, Location, Pragma, Server,
第二步:使用UploadId和内容
发出请求PUT /upload/storage/v1beta2/b/test-bucket-01/o?uploadType=resumable&name=args-master.zip&upload_id=AEnB2UoOYm9JYDAPNPisFKG5yheFdRF8oVaxpRHg62BGGBVr2Ue-sg3fbOmg1Ol-PFSXY60aPcl_hDaJP9176ZF6DPaCDAyDkg HTTP/1.1 Host: www.googleapis.com Connection: keep-alive Content-Length: 262144 Cache-Control: no-cache Content-Range: bytes 0-262143/1361678 Authorization: Bearer ya29.1.AADtN_UptViwI44N8A3Pg89q3lKS7ZesTqYplm0whTdTJFOj0MHjtp-yM7dB8GzfJk62lIuo Origin: http://www.trial.com
响应PUT请求,我得到503服务不可用错误。
HTTP/1.1 503 Service Unavailable Access-Control-Allow-Origin: http://www.trial.com Access-Control-Allow-Credentials: true Access-Control-Expose-Headers: Access-Control-Allow-Credentials, Access-Control-Allow-Origin, Access-Control-Expose-Headers, Content-Length, Content-Type, Date, Server, Transfer-Encoding
我尝试使用Google Cloud Storage的XML API上传但是也遇到了同样的错误。 请在这里建议出现问题。
由于
答案 0 :(得分:3)
我得到了解决方案,这是我的错误。如上所述here,Google非常关注大小。
块大小限制:所有块必须是256 KB的倍数(256 x 大小为1024字节),完成后的最终块除外 上传。如果使用分块,则保持块大小非常重要 尽可能大,以保持上传效率。
我发送的字节少于限制,这就是我收到错误的原因。
我仍然感到惊讶的是谷歌因为我的错误发送了503错误,而不是误导了4XX错误。
希望这会有所帮助。