YouTube直接上传数据的进度条? [英] Progress bar for YouTube direct uploads with data?

查看:150
本文介绍了YouTube直接上传数据的进度条?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想显示使用gdata API直接上传youtube的进度条.我通过对uploader.php脚本的ajax调用开始了上传,完成后,我更新了用户看到的页面上的状态.我真的很想设置一个计时器,每隔5秒钟左右更新进度条,这样用户就不会不耐烦地取消正在执行的完美上传.

I would like to display a progress bar for direct youtube uploads using the gdata api. I have the uploads getting kicked off in by an ajax call to an uploader.php script, and when it completes, I update the status on the page the user sees. I would really like to set a timer to update a progress bar every 5 seconds or so, so the user doesn't get impatient and cancel a perfectly good upload in progress.

我见过很多帖子,人们在寻找一种方法,可以使用YouTube API使用直接上传功能,在上传过程中从上传的内容中获取进度信息.我还没有任何答案.这似乎是API应该支持的功能.没办法吗?

I've seen many posts with people trying to find a way to get progress info back from their uploads while in progress, with the YouTube API using direct uploads. I haven't seen any answers. This seems like something that should be supported in the API. Is there not way to do this?

是否有一种完全不同的方式行得通?

Is there a completely different way, that would work?

推荐答案

您可以创建一个php页面,并使用CURL进行基于浏览器的上载".这意味着您可以控制上载,并且可以创建进度条.
这里是一个上传外观的示例.该代码的底部是有趣的部分.它使用CURL进行基于浏览器的上传",然后返回结果;

You can create a php page and do a "browser based upload" using CURL. This means that you have control over the upload and you can create a progress bar.
Here is an example of how an upload might look like. The bottom part of this code is the interesting part. It makes an "browser based upload" using CURL and then returns the result;

// 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;

您可以在此处详细了解 https://developers.google.com/youtube/2.0 /developers_guide_php#Browser_based_Upload

You can read more here https://developers.google.com/youtube/2.0/developers_guide_php#Browser_based_Upload

这篇关于YouTube直接上传数据的进度条?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆