2013-06-03 26 views
8

Im OK yetkili.Tarayıcıdan youtube'a video yükleme

Sayfamda 2 düğme en böyle vardır:

<input type="file" id="fileToSend"/> 
<input type="button" onclick="upload()" value="Upload" id="btnSend"/> 

ben "Yükle" butonuna tıkladığınızda youtube Seçilen dosyayı yüklemek istiyorum. Böyle bir işlevini çağırarak Im: Ben doğru FileStream göndermiyorum gibi

function upload() { 
    var fileStream; 
    var video = document.getElementById("fileToSend"); 
    var file = video.files[0]; 
    console.log(file); 
    console.log("Nombre: " + file.name); 
    var r = new FileReader(); 
    r.onload = function() { 
     console.log("fileStream creado"); 
     fileStream = r.result; 
     //console.log("FileStream: " + fileStream); 
    }; 

    console.log("Creando fileStream.."); 
    r.readAsBinaryString(file); 


    gapi.client.load('youtube', 'v3', 
     function() { 
      var request = gapi.client.youtube.videos.insert({ 
       part: 'snippet, status', 
       resource: { 
        snippet: { 
         title: 'Video Test Title 5', 
         description: 'Video Test Description', 
         tags: ['Tag 1', 'Tag 2'], 
         categoryId: "22" 
        }, 
        status: { 
         privacyStatus: "private" 
        } 
       } 
      }, fileStream); 
      request.execute(function (response) { 
       console.log("executing.."); 
       var result = response.result; 
       console.log(response); 
       if (result) { 
        console.log("execute completed"); 
        document.write(result); 
       } 
      }); 
     }); 
} 

Sorun tepki nesne üzerinde el hatayı olsun, "mediaBodyRequired", öyle.

+1

Sorunu mu yaşıyorsunuz? Öyleyse tam kodunuzu paylaşın çünkü yapmaya çalıştığım tam olarak budur. – offset

+0

Hata alıyorum: "Yakalanmamış ReferenceError: gapi tanımlı değil." niye ya? – offset

+0

v2 API'sini kullanarak sona erdim. V3 kullanarak bir çözüm bulursam yayınlayacağım. –

cevap

3

YouTube yükleme widget'ını kullanmamanın bir nedeni var mı?
https://developers.google.com/youtube/youtube_upload_widget

Neyse, düz API başvurusu
https://developers.google.com/youtube/v3/docs/videos/insert

badRequest mediaBodyRequired The request does not include the video content. 

bir başka kaynak: v3 insert kullanmak için iki seçenek vardır
https://developers.google.com/api-client-library/javascript/samples/samples

+0

Kat, cevabınız için teşekkürler. Sorunun, video içeriğinin dahil edilmemesi nedeniyle nedeni olduğunu biliyorum, ancak bunun nedeni API'nın javascipt kullanarak API çağrıları nasıl ekleyeceğini belirtmemesidir. Bir örnek tüm sorunlarımı çözer. –

+0

Eh, burada bir çalma listesi almak için bir örnek ... size yardımcı olabilir ... http://stackoverflow.com/a/12939702/996364 Ben bir 'insert' örnek arıyorum ama tüm Ben Şimdiye kadar bulduğum cevapta ikinci bağlantıda bir java örneği ve https://developers.google.com/youtube/v3/guides/uploading_a_video oauth kullanan –

+0

Evet ... Bu örneklerdeki kodumdan ilham aldım. Hala hayır hayır şans ... Yardımlarınız için teşekkür ederiz. –

1

. istek ya da gerekir:

  1. başka POST parametreleri veya iki parça halinde
  2. kullanımı çok parçalı şekilde kodlama gönderme engeller vücudun olarak ortam dosyası sahiptir. Bir bölüm, yüklenecek dosyadır ve diğer kısım, göndermek istediğiniz herhangi bir parametreyi içeren dosya benzeri bir JSON blobudur.

Ben resmi JavaScript istemcisi kullanarak bu çalışma almak, ama bu normal XmlHttpRequest kullanarak çalışabilir nasıl çok ayrıntılı bir açıklama yazdı asla: Burada

http://lithostech.com/2013/10/upload-google-youtube-api-v3-cors/ birinci yöntemin bir örneği aşağıda verilmiştir Dosyanın kendisi Sorgunun tüm içeriği:

// where videoFile is a http://www.w3.org/TR/FileAPI/#dfn-file 
var invocation = new XMLHttpRequest(); 
invocation.setRequestHeader('Authorization', 'Bearer ' + token); 
invocation.open('POST', "https://www.googleapis.com/upload/youtube/v3/videos?part=snippet", true); 
invocation.send(videoFile); 
+0

Stephen, blog yayınınız harika, ancak son http isteğini göster ("Sonuç, başarılı bir yüklemedir ve istek, yakut geminin yarattığı gibi görünüyor.") ... :( – l33t

İlgili konular