2010-12-11 2 views
3

Я следую за документацией об использовании gData Youtube API для непосредственных загрузок с помощью PHP. Я могу успешно загружать видео, так что все хорошо и хорошо. Часть, с которой мне сложно разобраться, если ее даже возможно получить некоторый статус выполнения загрузки, как в процентах, заполненных или загруженных байтах.Получение прогона прямой загрузки с использованием API-интерфейса youtube gdata

Вот фрагмент кода, в котором происходит загрузка.

<?php 
try { 
     $newEntry = $yt->insertEntry($myVideoEntry, $uploadUrl, 'Zend_Gdata_YouTube_VideoEntry'); 
    } catch (Zend_Gdata_App_HttpException $httpException) { 
     echo $httpException->getRawResponseBody(); 
    } catch (Zend_Gdata_App_Exception $e) { 
     echo $e->getMessage(); 
    } 
?> 

Кто-нибудь есть какие-либо идеи, как обновить $progess переменную или что-то, как это при загрузке?

ответ

5

Демо URL: -

http://jquery.malsup.com/form/progress.html

Вы можете скачать файл Jquery ниже URL и добавьте в HTML тег

http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js

http://malsup.github.com/jquery.form.js

Попробуйте это: -

видеовыход: -

enter image description here

Это мой video.php файл

<!doctype html> 
<head> 
<title>File Upload Progress Demo #1</title> 
<style> 
body { padding: 30px } 
form { display: block; margin: 20px auto; background: #eee; border-radius: 10px; padding: 15px } 

.progress { position:relative; width:400px; border: 1px solid #ddd; padding: 1px; border-radius: 3px; } 
.bar { background-color: #B4F5B4; width:0%; height:20px; border-radius: 3px; } 
.percent { position:absolute; display:inline-block; top:3px; left:48%; } 
</style> 
</head> 
<body> 
    <h1>File Upload Progress Demo #1</h1> 
    <code>&lt;input type="file" name="myfile"></code> 
     <form action="video_upload.php" method="post" enctype="multipart/form-data"> 
     <input type="file" name="uploadedfile"><br> 
     <input type="submit" value="Upload File to Server"> 
    </form> 

    <div class="progress"> 
     <div class="bar"></div > 
     <div class="percent">0%</div > 
    </div> 

    <div id="status"></div> 

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script> 
<script src="http://malsup.github.com/jquery.form.js"></script> 
<script> 
(function() { 

var bar = $('.bar'); 
var percent = $('.percent'); 
var status = $('#status'); 

$('form').ajaxForm({ 
    beforeSend: function() { 
     status.empty(); 
     var percentVal = '0%'; 
     bar.width(percentVal) 
     percent.html(percentVal); 
    }, 
    uploadProgress: function(event, position, total, percentComplete) { 
     var percentVal = percentComplete + '%'; 
     bar.width(percentVal) 
     percent.html(percentVal); 
    }, 
    complete: function(xhr) { 
     bar.width("100%"); 
     percent.html("100%"); 
     status.html(xhr.responseText); 
    } 
}); 

})();  
</script> 

</body> 
</html> 

это мой файл video_upload.php

<?php 
// video_upload.php 


require_once 'Zend/Loader.php'; // the Zend dir must be in your include_path 
Zend_Loader::loadClass('Zend_Gdata_YouTube'); 
$yt = new Zend_Gdata_YouTube(); 

// Define the authentication that will be used 
Zend_Loader::loadClass('Zend_Gdata_ClientLogin'); 

// Authenticate 
$authenticationURL= 'https://www.google.com/accounts/ClientLogin'; 
$httpClient = 
    Zend_Gdata_ClientLogin::getHttpClient(
       $username = "USERNAME", 
       $password = "PASSWORD", 
       $service = 'youtube', 
       $client = null, 
       $source = 'HTML SOURCE CODE SNIPPET', 
       $loginToken = null, 
       $loginCaptcha = null, 
       $authenticationURL); 

$applicationId = 'YOUR APPLICATION ID'; 
$clientId = 'Upload videos to youtube using the youtube API'; 
$developerKey = 'YOUR DEVELOPER KEY'; 
$yt = new Zend_Gdata_YouTube($httpClient, $applicationId, $clientId, $developerKey); 



// create a new VideoEntry object 
$myVideoEntry = new Zend_Gdata_YouTube_VideoEntry(); 

$myVideoEntry->setVideoTitle($videoTitle); 
$myVideoEntry->setVideoDescription($VideoDescription); 
// The category must be a valid YouTube category! 
$myVideoEntry->setVideoCategory($VideoCategory); 

// Set keywords. Please note that this must be a comma-separated string 
// and that individual keywords cannot contain whitespace 
$myVideoEntry->SetVideoTags($VideoTags); 

$tokenHandlerUrl = 'http://gdata.youtube.com/action/GetUploadToken'; 
$tokenArray = $yt->getFormUploadToken($myVideoEntry, $tokenHandlerUrl); 
$tokenValue = $tokenArray['token']; 
$postUrl = $tokenArray['url']; 


$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $postUrl."?nexturl=http://YOUR_WEBPAGE.com/"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLINFO_HEADER_OUT, true); 
curl_setopt($ch, CURLOPT_POST, true); 
// same as <input type="file" name="file"> 
$post = array("file"=>"@".$VideoFile['tmp_name'], "token"=>$tokenValue); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
$response = curl_exec($ch); 
$info = curl_getinfo($ch); 

echo $info; 

?> 
Смежные вопросы