Интеграция API YouTube ASP.NET - загрузка видео с одной страницы - PullRequest
6 голосов
/ 10 марта 2009

мы пытаемся использовать Google YouTube API для загрузки видео с нашего сайта на YouTube напрямую через браузер.

API работает в два этапа, на первом этапе нам нужно создать объект Video со всеми метаданными, такими как заголовок, теги, описание, категория и т. Д. Затем нам нужно отправить запрос с этим объектом на YouTube и получить Объект токена, сгенерированный как ответ. Этот токен-объект имеет значение токена и URL-адрес токена в качестве своих членов.

На втором шаге они предлагают создать форму с атрибутом действия, для которого указан URL-адрес токена. Эта форма должна иметь элемент управления загрузкой файлов и скрытое поле со значением токена в качестве значения. Когда эта форма будет опубликована, она будет загружать видео на YouTube.

Это прекрасно работает, если у нас это двухэтапный процесс, сначала запрашивая у пользователей метаданные, а затем перенаправляя их на вторую страницу для фактической загрузки видео. Тем не менее, мы пытаемся сделать это на одной странице, представившись пользователю одним шагом.

У нас есть MasterPage с указанной в нем «aspnetForm», из-за чего у нас не может быть другой формы со свойством runat='server'.

Мы попытались изменить атрибут действия aspnetFrom с помощью JavaScript / code-behind, но он остался прежним, что бы мы ни делали.

Мы также попытались поместить еще одну вложенную форму, тег действия которой будет установлен на событие нажатия кнопки, после получения первого ответа от YouTube с токеном. Но даже это не работает, так как форма не создается во время вызова этого метода ..

Мы попробовали несколько подходов, но ни один из них не работает .. любые предложения по этому поводу были бы хорошими.

Если у вас есть еще вопросы, чтобы понять ситуацию ясно, пожалуйста, дайте мне знать ..


Обновление:

Спасибо за ответы, ребята.

Мы немного изменили бизнес-логику, чтобы решить проблему. Это было давно, и я не ищу решения на данный момент ..

Однако вопрос все еще открыт и получает ответы. Я действительно ценю всю помощь и, следовательно, оставил бы вопрос открытым для любых дальнейших обсуждений.

Ответы [ 3 ]

4 голосов
/ 11 января 2010
2 голосов
/ 21 января 2010

Я бы создал форму, которую вы отображаете пользователю с текстовыми полями для метаданных и элементом управления загрузкой файлов для видео.

Затем в коде, который обрабатывает обратную передачу, вы можете отправить метаданные в API YouTube, чтобы получить значение токена.

Затем вы создаете HttpWebRequest со значением токена, переданным методу Create объекта WebRequest, и устанавливаете для свойства Method значение Post. Затем вы добавляете загруженное видео (см. ответ dr evil на «Загрузить файлы с помощью HTTPWebrequest (multipart / form-data)» , чтобы подробнее узнать об этом), и когда вы вызываете GetResponse(), ваш файл будет быть представлен.

На что нужно обратить внимание:

  1. ScriptTimeout: если вы разрешаете своим пользователям загружать большие файлы на YouTube - если для его передачи требуется некоторое время, то ваш сценарий может быть преждевременно завершен.
  2. Пропускная способность: вы будете иметь как загрузку на свои серверы, так и загрузку на YouTube для учета - позволяя пользователю загружать видео прямо на YouTube в два этапа, вы никогда не касаетесь видео, и оно никогда не приближается ваши серверы - это может быть проблемой для вас или вашего хостинг-провайдера - например, мой хост не учитывает трафик через FTP в моей ежемесячной пропускной способности, но включает файлы, загруженные / загруженные через веб-сайт.
0 голосов
/ 11 марта 2009

Вы можете публиковать в форме YouTube программно. Недавно я изменил пример, найденный в http://www.codeproject.com/KB/cs/uploadfileex.aspx, чтобы написать некоторый код, который разместил файл на стороннем веб-сайте в качестве ночной работы.

Это может привести к снижению производительности, поскольку файл должен быть загружен на ваш сервер, а затем на YouTube, а не непосредственно на YouTube, но это вариант.

...