Есть необходимость в добавлении видео с сайта напрямую. Есть код:
// отправляем данные
$data = "<?xml version='1.0'?>
<entry xmlns='http://www.w3.org/2005/Atom'
xmlns:media='http://search.yahoo.com/mrss/'
xmlns:yt='http://gdata.youtube.com/schemas/2007'>
<media:group>
<media:title type='plain'>test</media:title>
<media:description type='plain'>Video</media:description>
<media:category scheme='http://gdata.youtube.com/schemas/2007/categories.cat'>Animals</media:category>
<media:keywords>test</media:keywords>
</media:group>
</entry>";
$boundary = $this->boundary();
if ($fp = fsockopen("uploads.gdata.youtube.com", 80, $errno, $errstr, 20))
{
$request ="POST /feeds/api/users/".$this->_user_name."/uploads HTTP/1.1\r\n";
$request.="Host: uploads.gdata.youtube.com\r\n";
$request.="Authorization: GoogleLogin auth=".$respons_key."\r\n";
$request.="X-GData-Client: ".$this->_source."\r\n";
$request.="X-GData-Key: key=".$this->_mykey."\r\n";
$request.="Slug: ".$_FILES['video_file']['name']."\r\n";
$request.="Content-Type: multipart/related; boundary=".$boundary."\r\n";
$request.="Content-Length: ".strlen($data)."\r\n";
$request.="Connection: close\r\n";
$request.="\r\n";
$request.=$boundary."\r\n";
$request.="Content-Type: application/atom+xml; charset=UTF-8\r\n";
$request.="\r\n";
$request.=$data."\r\n";
$request.=$boundary."\r\n";
$request.="\r\n";
$request.="Content-Type: video/*\r\n";
$request.="Content-Transfer-Encoding: binary\r\n";
$request.="\r\n";
$request.="/site/".$_FILES['video_file']['name']."\r\n";
$request.=$boundary."--\r\n";
socket_set_timeout($fp, 10);
fputs($fp,$request,strlen($request));
$response = fread($fp,3280);
fclose($fp);
}
, где $this->_user_name - имя пользователя
$respons_key - код, который был получен после авторизации в google
$this->_source - название моего приложения
$this->_mykey - ключ разработчика
$_FILES['video_file']['name'] - название файла
$boundary - буквы, цифры, используется как разделитель
Проблема в том, что при загрузке файлов и попытке отправить их на youtube получаю сообщение No file found in upload request. При этом, после кода выше я файл нормально сохраняю в папку у себя на сервере и всё нормально.
Код выше был взять из руководства разработчика на офф. сайте: http://code.google.com/intl/ru/apis/youtub...irect_uploading