Javascript 如何通过AJAX发送YouTube视频元数据
我目前正在开发一个功能,通过AJAX将视频上传到我的频道。到目前为止,我已经成功地对授权进行了排序,并在我的频道上创建了一个“视频”,但这就是它的结束。所有数据似乎都没有通过。我不确定如何正确发送元数据,以及实际视频数据本身是否正确发送 以下是YouTube参考资料: 另一件奇怪的事情是,当请求设置为异步时,我没有得到响应,加载函数也没有运行。将asynchronous设置为false后,我从YouTube获得一个响应Javascript 如何通过AJAX发送YouTube视频元数据,javascript,ajax,api,video,youtube,Javascript,Ajax,Api,Video,Youtube,我目前正在开发一个功能,通过AJAX将视频上传到我的频道。到目前为止,我已经成功地对授权进行了排序,并在我的频道上创建了一个“视频”,但这就是它的结束。所有数据似乎都没有通过。我不确定如何正确发送元数据,以及实际视频数据本身是否正确发送 以下是YouTube参考资料: 另一件奇怪的事情是,当请求设置为异步时,我没有得到响应,加载函数也没有运行。将asynchronous设置为false后,我从YouTube获得一个响应 function UploadVideo() {
function UploadVideo()
{
formData = new FormData();
video = {
snippet : {
title : "Test Video",
description : "This is a test video",
categoryId : "22",
tags : "test"
}
};
file = document.getElementById("test_video").files[0];
ajax = new XMLHttpRequest();
formData.append("file", file);
formData.append("snippet", JSON.stringify(video));
ajax.open("POST", "https://www.googleapis.com/upload/youtube/v3/videos?part=snippet", true);
ajax.setRequestHeader("Content-type", "application/octet-stream");
ajax.setRequestHeader("Authorization", '<?php echo $authorization_header; ?>');
ajax.onload = function() {
if (ajax.status == 200) {
alert(ajax.responseText);
document.getElementById("video_response").innerHTML = ajax.responseText;
}
};
ajax.send(formData);
}
函数上传视频()
{
formData=新的formData();
视频={
片段:{
标题:“测试视频”,
描述:“这是一段测试视频”,
类别:“22”,
标签:“测试”
}
};
file=document.getElementById(“测试视频”).files[0];
ajax=新的XMLHttpRequest();
formData.append(“文件”,file);
append(“snippet”,JSON.stringify(video));
打开(“POST”https://www.googleapis.com/upload/youtube/v3/videos?part=snippet“,对);
setRequestHeader(“内容类型”、“应用程序/八位字节流”);
setRequestHeader(“授权”,“”);
ajax.onload=function(){
if(ajax.status==200){
警报(ajax.responseText);
document.getElementById(“video_response”).innerHTML=ajax.responseText;
}
};
发送(formData);
}
好吧,我没有完全弄明白,但找到了一个整洁的解决方案
- 发布视频数据并从响应中捕获id
- 然后用所需的元数据更新新创建的视频
function UpdateVideoInfo(video_id){
var resource = {
'snippet':{
'title' : 'test title',
'description' : 'test description',
'categoryId' : 22
},
'status' : {
'privacyStatus' : 'private'
},
'id': video_id
};
post_string = JSON.stringify(resource);
var ajax = new XMLHttpRequest();
ajax.open('PUT', 'https://www.googleapis.com/youtube/v3/videos?part=snippet,status', true);
ajax.setRequestHeader("Authorization", '<?php echo $authorization_header; ?>');
ajax.setRequestHeader("Content-type", "application/json; charset=UTF-8");
ajax.send(post_string);
ajax.onload = function() {
if (ajax.status == 200) {
alert(ajax.responseText);
}
};
}
function UploadVideo(){
var file = document.getElementById("test_video").files[0];
var ajax = new XMLHttpRequest();
ajax.open("POST", "https://www.googleapis.com/upload/youtube/v3/videos?part=snippet", true);
ajax.setRequestHeader("Content-type", "application/octet-stream");
ajax.setRequestHeader("Authorization", '<?php echo $authorization_header; ?>');
ajax.onload = function() {
if (ajax.status == 200) {
var response_body = JSON.parse(ajax.responseText);
document.getElementById("video_response").innerHTML = response_body;
UpdateVideoInfo(response_body['id']);
}
};
ajax.send(file);
return false;
}
函数更新视频信息(视频id){
变量资源={
“片段”:{
“标题”:“测试标题”,
“描述”:“测试描述”,
分类:22
},
“状态”:{
“privacyStatus”:“private”
},
“id”:视频\u id
};
post_string=JSON.stringify(资源);
var ajax=new-XMLHttpRequest();
open('PUT','https://www.googleapis.com/youtube/v3/videos?part=snippet,状态“,真实);
setRequestHeader(“授权”,“”);
setRequestHeader(“内容类型”,“应用程序/json;字符集=UTF-8”);
发送(post_字符串);
ajax.onload=function(){
if(ajax.status==200){
警报(ajax.responseText);
}
};
}
函数UploadVideo(){
var file=document.getElementById(“测试视频”).files[0];
var ajax=new-XMLHttpRequest();
打开(“POST”https://www.googleapis.com/upload/youtube/v3/videos?part=snippet“,对);
setRequestHeader(“内容类型”、“应用程序/八位字节流”);
setRequestHeader(“授权”,“”);
ajax.onload=function(){
if(ajax.status==200){
var response_body=JSON.parse(ajax.responseText);
document.getElementById(“video\u response”).innerHTML=response\u body;
UpdateVideoInfo(响应体['id']);
}
};
发送(文件);
返回false;
}
好吧,我没有完全弄明白,但找到了一个整洁的解决方案
- 发布视频数据并从响应中捕获id
- 然后用所需的元数据更新新创建的视频
function UpdateVideoInfo(video_id){
var resource = {
'snippet':{
'title' : 'test title',
'description' : 'test description',
'categoryId' : 22
},
'status' : {
'privacyStatus' : 'private'
},
'id': video_id
};
post_string = JSON.stringify(resource);
var ajax = new XMLHttpRequest();
ajax.open('PUT', 'https://www.googleapis.com/youtube/v3/videos?part=snippet,status', true);
ajax.setRequestHeader("Authorization", '<?php echo $authorization_header; ?>');
ajax.setRequestHeader("Content-type", "application/json; charset=UTF-8");
ajax.send(post_string);
ajax.onload = function() {
if (ajax.status == 200) {
alert(ajax.responseText);
}
};
}
function UploadVideo(){
var file = document.getElementById("test_video").files[0];
var ajax = new XMLHttpRequest();
ajax.open("POST", "https://www.googleapis.com/upload/youtube/v3/videos?part=snippet", true);
ajax.setRequestHeader("Content-type", "application/octet-stream");
ajax.setRequestHeader("Authorization", '<?php echo $authorization_header; ?>');
ajax.onload = function() {
if (ajax.status == 200) {
var response_body = JSON.parse(ajax.responseText);
document.getElementById("video_response").innerHTML = response_body;
UpdateVideoInfo(response_body['id']);
}
};
ajax.send(file);
return false;
}
函数更新视频信息(视频id){
变量资源={
“片段”:{
“标题”:“测试标题”,
“描述”:“测试描述”,
分类:22
},
“状态”:{
“privacyStatus”:“private”
},
“id”:视频\u id
};
post_string=JSON.stringify(资源);
var ajax=new-XMLHttpRequest();
open('PUT','https://www.googleapis.com/youtube/v3/videos?part=snippet,状态“,真实);
setRequestHeader(“授权”,“”);
setRequestHeader(“内容类型”,“应用程序/json;字符集=UTF-8”);
发送(post_字符串);
ajax.onload=function(){
if(ajax.status==200){
警报(ajax.responseText);
}
};
}
函数UploadVideo(){
var file=document.getElementById(“测试视频”).files[0];
var ajax=new-XMLHttpRequest();
打开(“POST”https://www.googleapis.com/upload/youtube/v3/videos?part=snippet“,对);
setRequestHeader(“内容类型”、“应用程序/八位字节流”);
setRequestHeader(“授权”,“”);
ajax.onload=function(){
if(ajax.status==200){
var response_body=JSON.parse(ajax.responseText);
document.getElementById(“video\u response”).innerHTML=response\u body;
UpdateVideoInfo(响应体['id']);
}
};
发送(文件);
返回false;
}