2016-04-08 13 views
1

現在、AJAX経由で自分のチャンネルに動画をアップロードする機能を開発中です。私は今までに承認をうまく整理して管理していて、自分のチャンネルに「ビデオ」が作成されていますが、それが終わりです。データのどれも通過していないようです。メタデータを正しく送信する方法と、実際のビデオデータ自体が適切に送信されているかどうかはわかりません。ここでAJAX経由でYouTube動画メタデータを送信する方法

は、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

まあ、私は正確には分かりませんでしたが、きちんとした解決策を見つけました。

  • ポスト映像データと応答からIDをキャプチャ
  • 次に必要なメタデータ

と、新しく作成されたビデオを更新だから、完璧ではないのですが、それは目標を達成します。新しい動画をアップロードメタ情報付き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; 
    } 
関連する問題