YouTube APIの統合ASP.NET-単一ページで動画をアップロード
-
08-07-2019 - |
質問
Google YouTube APIを使用して、ウェブサイトからYouTubeに直接ブラウザ経由で動画をアップロードしようとしています。
APIは2つのステップで機能します。最初のステップでは、タイトル、タグ、説明、カテゴリなどのすべてのメタデータを含むVideoオブジェクトを作成する必要があります。応答として生成されたトークンオブジェクト。このトークンオブジェクトには、そのメンバーとしてトークン値とトークンURLがあります。
2番目のステップでは、アクション属性をトークンURLに設定してフォームを作成することを提案します。このフォームには、ファイルアップロードコントロールと、トークン値を値として含む非表示フィールドが必要です。このフォームを投稿すると、動画がYouTubeにアップロードされます。
これは、ユーザーが最初にメタデータを要求し、次に実際のビデオアップロードのために2番目のページにリダイレクトする2段階のプロセスである場合に効果的です。しかし、私たちはこれを単一のページで達成しようとしており、ユーザーには単一のステップとして表示されます。
'aspnetForm'が指定されたMasterPageがあります。そのため、 runat = 'server'
プロパティを持つ別のフォームを作成することはできません。
JavaScript /コードビハインドを使用してaspnetFromのアクション属性を変更しようとしましたが、何をしても同じままです。
YouTubeからのトークン付きの最初の応答が受信された後、ボタンクリックイベントでアクションタグが設定される別のネストされたフォームを配置しようとしました。しかし、このメソッドが呼び出された時点ではフォームが作成されていないため、これでも機能しません。
いくつかのアプローチを試しましたが、どれもうまくいかないようです。これに関する提案は素晴らしいでしょう。
状況を明確に理解するための質問がありましたら、お知らせください。.
更新:
回答者に感謝します。
ビジネスロジックを少し変更して、問題を解決しました。ずっと前のことで、今のところ解決策を探しているわけではありません。
ただし、質問はまだ公開されており、回答を得ています。私はすべての助けに本当に感謝しているので、さらなる議論のために質問を開いたままにしておきます。
解決
メタデータのテキストフィールドとビデオのファイルアップロードコントロールを使用してユーザーに表示するフォームを作成します。
次に、ポストバックを処理するコードで、メタデータをYouTube APIに送信してトークン値を取得できます。
次に、 HttpWebRequest を作成します。 WebRequest
オブジェクトの Create
メソッドに渡されるトークン値。 Method
プロパティを Post
に設定します。次に、アップロードした動画を追加します( drの"への回答を参照してください) HTTPWebrequest(multipart / form-data)" でファイルをアップロードします。詳しくは、をご覧ください)、 GetResponse()
を呼び出すと、ファイルが送信されます。
注意すべき事項:
-
ScriptTimeout
:ユーザーが大きなファイルをYouTubeにアップロードすることを許可している場合-送信に時間がかかる場合、スクリプトが途中で終了する可能性があります。 - 帯域幅:サーバーへのアップロードと、その後のYouTubeへのアップロードの両方を考慮に入れます。ユーザーが2ステップのプロセスで直接YouTubeにアップロードできるようにすることで、ビデオに触れることなく、あなたのサーバー-これはあなたまたはあなたのホスティングプロバイダーの問題かもしれません-たとえば、私のホストは毎月の帯域幅でFTPを介したトラフィックをカウントしませんが、ウェブサイトを通してアップロード/ダウンロードしたファイルを含みます。
他のヒント
プログラムでYouTubeフォームに投稿できます。 http://www.codeproject.com/KB/csにある例を最近変更しました。 /uploadfileex.aspx を使用して、夜間のジョブとしてサードパーティのWebサイトにファイルを投稿するコードを記述します。
ファイルをサーバーにアップロードし、YouTubeに直接ではなくYouTubeにアップロードする必要があるため、これはパフォーマンスヒットを伴いますが、これはオプションです。