我的网络服务器上存储了视频文件,我希望能够以自动方式将其上传到 YouTube。这些视频是在我的网站上创建的,然后用户可以将其上传到他们的 YouTube 频道。
根据此处的可恢复视频上传过程,我正在尝试进行 HTTP 请求调用以自动化此视频上传过程:https ://developers.google.com/youtube/2.0/developers_guide_protocol_resumable_uploads
一切正常(获得用户的访问权限,发送视频的元数据),直到最后一步,即视频本身的上传。当我发出 PUT 请求时,它返回响应代码 417 并显示无效请求。像这样:
遇到以下错误:
Invalid Request
HTTP 请求的某些方面无效。可能出现的问题:
Missing or unknown request method
Missing URL
Missing HTTP Identifier (HTTP/1.0)
Request is too large
Content-Length missing for POST or PUT requests
Illegal character in hostname; underscores are not allowed
我查看了所有这些建议的可能问题,但我在代码中的任何地方都找不到错误。
错误信息只是含糊不清,不够具体,无法告诉我问题出在哪里。
我正在使用 PHP 的标准 Http Request 类执行视频上传过程的每一步。( http://www.php.net/manual/en/class.httprequest.php )
这是我的代码:
$videoFile = *Some Video File*;
$httpRequest = new httpRequest($_SESSION['youtube_data_api']['upload_url'], HttpRequest::METH_PUT);
$httpRequest->setContentType('video/mp4');
$httpRequest->setPutFile($videoFile);
$headersArr = array('Content-Length' => strlen($httpRequest->getRawRequestMessage()));
$httpRequest->setHeaders($headersArr);
$httpMessage = $httpRequest->send();
我在互联网上搜索了很多关于这个问题的信息,很多时候我发现人们使用 Zend 框架的 YouTube 库来完成这个,这更容易。不幸的是,以我现在网站的规模,花一些时间尝试将框架集成到我的网站中是不可行的。
对这个问题的任何见解都会有很大帮助!谢谢!