6 Stimmen

YouTube API-Integration ASP.NET - Video-Upload mit einer einzigen Seite

Wir versuchen, die Google YouTube API zu nutzen, um Videos von unserer Website direkt über den Browser auf YouTube hochzuladen.

Die API funktioniert in zwei Schritten. Im ersten Schritt müssen wir ein Video-Objekt mit allen Metadaten wie Titel, Tags, Beschreibung, Kategorie usw. erstellen. Dann müssen wir eine Anfrage mit diesem Objekt an YouTube senden und erhalten als Antwort ein Token-Objekt. Dieses Token-Objekt hat einen Token-Wert und eine Token-URL als Mitglieder.

Im zweiten Schritt wird vorgeschlagen, ein Formular zu erstellen, bei dem das Attribut action auf die Token-URL gesetzt ist. Dieses Formular sollte ein Steuerelement zum Hochladen von Dateien und ein verstecktes Feld mit dem Token-Wert als Wert enthalten. Wenn dieses Formular veröffentlicht wird, wird das Video auf YouTube hochgeladen.

Das funktioniert gut, wenn wir den Prozess in zwei Schritten durchführen, indem wir die Nutzer zunächst nach den Metadaten fragen und sie dann auf eine zweite Seite für den eigentlichen Video-Upload weiterleiten. Wir versuchen jedoch, dies auf einer einzigen Seite zu erreichen, die für den Benutzer als ein einziger Schritt erscheint.

Wir haben eine MasterPage mit dem darin angegebenen 'aspnetForm', weswegen wir kein weiteres Formular mit runat='server' Eigentum.

Wir haben versucht, das Aktionsattribut von aspnetFrom mit JavaScript/Code-Behind zu ändern, aber es bleibt immer gleich, egal was wir tun.

Wir haben auch versucht, ein weiteres verschachteltes Formular einzufügen, dessen Action-Tag beim Klick-Ereignis auf die Schaltfläche gesetzt wird, nachdem die erste Antwort von YouTube mit dem Token eingegangen ist. Aber auch das funktioniert nicht, da das Formular nicht zum Zeitpunkt des Aufrufs dieser Methode erstellt wird.

Wir haben verschiedene Ansätze ausprobiert, aber keiner scheint zu funktionieren. Jeder Vorschlag dazu wäre großartig.

Wenn Sie weitere Fragen haben, um die Situation klar zu verstehen, lassen Sie es mich bitte wissen.


Aktualisierung:

Danke für die Antworten, Leute.

Wir haben die Geschäftslogik ein wenig geändert, um das Problem zu beheben. Das Problem liegt schon lange zurück, und ich bin nicht auf der Suche nach einer Lösung für dieses Problem.

Die Frage ist jedoch noch offen und wird beantwortet. Ich bin wirklich dankbar für jede Hilfe und möchte die Frage daher für weitere Diskussionen offen lassen.

4voto

2voto

Zhaph - Ben Duguid Punkte 26343

Ich würde ein Formular erstellen, das Sie dem Benutzer mit Textfeldern für die Metadaten und einem Steuerelement zum Hochladen von Dateien für das Video anzeigen.

Dann können Sie im Code, der das Postback bearbeitet, die Metadaten an die YouTube-API übermitteln, um den Token-Wert zu erhalten.

Sie erstellen dann eine HttpWebRequest mit dem Token-Wert, der in die Create Methode der WebRequest Objekt und setzen Sie das Method Eigenschaft zu Post . Sie fügen dann das hochgeladene Video hinzu (siehe dr evil's Antwort auf "Hochladen von Dateien mit HTTPWebrequest (multipart/form-data)" für eine genauere Erläuterung), und wenn Sie die GetResponse() Ihre Akte wird eingereicht.

Worauf Sie achten sollten:

  1. ScriptTimeout : Wenn Sie Ihren Nutzern erlauben, große Dateien auf YouTube hochzuladen, könnte Ihr Skript vorzeitig beendet werden, wenn die Übertragung eine Weile dauert.
  2. Bandbreite: Sie müssen sowohl den Upload auf Ihre Server als auch den Upload auf YouTube berücksichtigen - wenn Sie dem Nutzer erlauben, das Video in einem zweistufigen Verfahren direkt auf YouTube hochzuladen, berühren Sie das Video nie und es kommt nie in die Nähe Ihrer Server - dies könnte ein Problem für Sie oder Ihren Hosting-Anbieter sein - mein Hoster zum Beispiel zählt den Datenverkehr über FTP nicht zu meiner monatlichen Bandbreite, aber er berücksichtigt Dateien, die über die Website hoch- oder heruntergeladen werden.

0 Stimmen

Ja dieser Ansatz scheint dem am nächsten zu kommen, was wir letztendlich getan haben :0)

0voto

sgriffinusa Punkte 4133

Sie könnten das YouTube-Formular programmgesteuert veröffentlichen. Ich habe kürzlich das Beispiel unter http://www.codeproject.com/KB/cs/uploadfileex.aspx um einen Code zu schreiben, der eine Datei als nächtliche Aufgabe an eine Website eines Dritten sendet.

Dies wäre zwar mit einem Leistungseinbruch verbunden, da die Datei auf Ihren Server und dann zu YouTube hochgeladen werden müsste, anstatt direkt zu YouTube, aber es ist eine Option.

0 Stimmen

Ja ich dachte daran, das als letzten Ausweg zu tun :( Danke für die Hilfe aber

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X