我的视频文件存储在我的网络服务器上,我希望能够以自动方式上传到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库来实现这一目标,这要容易得多。不幸的是,由于我现在的网站规模很大,花费一些时间尝试将框架集成到我的网站上是不可行的。
对这个问题的任何见解都会有很大帮助!谢谢!