2016-04-08 28 views
1

Şu anda kanalıma AJAX aracılığıyla video yüklemek için bir fonksiyon üzerinde çalışıyorum. Şu ana kadar yetkilendirmeyi başarılı bir şekilde yönetmeyi başardım ve kanalımda bir "video" oluşturuluyordu, ancak işin bittiği yer burası. Verilerden hiçbiri geçmiyor gibi görünüyor. Meta verilerinin düzgün bir şekilde nasıl gönderileceğinden ve gerçek video verilerinin kendisinin düzgün bir şekilde gönderilip gönderilmediğinden emin değilim. asenkron olarak ayarlandı isteği ile, hiçbir tepki ve çalışmaz yük fonksiyonu olsun, https://developers.google.com/youtube/v3/docs/videos/insertYouTube video meta verilerini AJAX aracılığıyla gönderme

Bir başka garip şey:

YouTube'un referanstır. Eşzamansız yanlış olarak ayarlandığında, YouTube'dan bir yanıt alırım.

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

cevap

0

Ben tam onu ​​anlamaya, ancak bir düzenli çözüm bulundu vermedi.

  • Mesaj video verilerini ve yanıttan Kimliği yakalamak
  • Sonra gerekli meta verileri

ile yeni oluşturulan videoyu güncellemek Yani mükemmel değil, ama hedefe ulaşır: Yeni video yükleme AJAX üzerinden meta bilgisi ile.

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; 
    } 
İlgili konular