2016-04-08 2 views
1

В настоящее время я работаю над функцией загрузки видео на свой канал через AJAX. Мне удалось успешно отсортировать авторизацию, и на моем канале создается «видео», но это заканчивается. Ни одна из данных, похоже, не проходит. Я не уверен, как правильно отправлять метаданные и если фактические видеоданные сами отправляются должным образом.Как отправить метаданные видео YouTube через AJAX

Вот ссылка на YouTube: https://developers.google.com/youtube/v3/docs/videos/insert

Еще одна странная вещь, с просьбой установить, чтобы быть асинхронными, я не получаю никакого ответа и функцию загрузки не запускается. С асинхронным значением false, я получаю ответ от YouTube.

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

ответ

0

Ну, я точно не понял, но нашел аккуратное решение.

  • сообщение видеоданные и захватить идентификатор из ответа
  • Затем обновите вновь созданного видео с требуемыми метаданными

Так что это не идеальный, но он достигает цели: Загрузить новое видео через AJAX с метаинформацией.

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; 
    } 
Смежные вопросы