1

当我从我的网站上传一个 150M 的视频时,我遇到了问题,即:我从 youtube 收到 503 响应而不是 201 创建响应,但是该视频已经上传到 youtube,因为我可以在我的 youtube 页面上看到它.

我在以下位置使用 API: https ://developers.google.com/youtube/2.0/developers_guide_protocol_resumable_uploads

那么有人可以告诉我发生了什么事吗?这个案子我该怎么办?

太谢谢了!

4

1 回答 1

0

使用可恢复上传时,我遇到了同样的问题。如果我不澄清请求标头中的 Content-Range,我什至可以上传大小为 550MB 的文件。但是如果我将文件切成不同的块并通过不同的请求上传它们,并设置 Content-Range 标头。那么它将以相同的错误消息 503 结束。

我对答案的猜测是标头变量 Content-Length。Google 期望 Content-Length 是 Total-Content-length 的剩余大小。并且所有浏览器都会将该值修改为您发送的数据的实际大小。

例如,如果您在 3 个块中发送 3 个字节的数据,则每个块为 1 个字节。在第一个块期间,您将 Content-Length 设置为 3(剩余大小)。但浏览器将其修改为 1,这使 Google 认为只剩下 1 个字节,并且在发送第一个块后,服务关闭,您无法再向该特定上传 URL 发送任何数据,因此错误代码 503 是回来。

所以我想更好的解决方案是让 Google 使用除 Content-Length 之外的其他标头变量。或者一个小技巧是使用仍然可恢复的上传方法,但不将文件分成几部分,并且在请求中没有 Content-Range 标头设置。在上传的同时,我们可以通过谷歌文档描述的具体方式调用相同的UPLOAD_URL来查看状态。至少我已经成功上传了 550MB 的文件。

于 2013-08-14T13:17:22.840 回答