【问题标题】:Retrieving progress of Direct Upload using youtube gdata API使用 youtube gdata API 检索直接上传的进度
【发布时间】:2011-05-24 02:20:08
【问题描述】:

我正在关注有关使用 gData Youtube API 使用 PHP 进行直接上传的文档。我可以成功上传视频,一切都很好。我无法弄清楚的部分,如果它甚至可能获得一些上传进度状态,如完成百分比或上传的字节数。

这是上传发生的代码的 sn-p。

 <?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 变量或其他内容吗?

【问题讨论】:

    标签: php upload youtube progress zend-gdata


    【解决方案1】:

    演示网址:--

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

    您可以在url下面下载jquery文件并添加html标签

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

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

    试试这个:--

    输出视频:-

    这是我的 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;
    
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-01
      • 1970-01-01
      • 2012-05-27
      • 2012-01-13
      • 2013-08-10
      • 2016-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多