2010-12-11 83 views
3

Je suis en train de suivre la documentation sur l'utilisation de l'API gData Youtube pour effectuer des téléchargements directs avec PHP. Je peux mettre en ligne des vidéos avec succès, alors c'est très bien. La partie que j'ai du mal à comprendre, si c'est possible, obtenir un statut de progression de téléchargement comme en pourcentage complet ou le nombre d'octets téléchargés.Récupération de la progression du téléchargement direct à l'aide de l'API youtube gdata

Voici l'extrait de code dans lequel le téléchargement a lieu.

<?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(); 
    } 
?> 

Quelqu'un a des idées sur la façon de mettre à jour une variable $progess ou quelque chose comme cela est le téléchargement?

Répondre

5

url Démo: -

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

Vous pouvez télécharger le fichier jquery ci-dessous URL et ajouter dans la balise html

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

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

Essayez ceci: -

sortie vidéo: -

enter image description here

Ceci est mon fichier 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> 

c'est mon fichier 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; 

?>