Интеграция с API YouTube ASP.NET - загрузка видео с одной страницы

StackOverflow https://stackoverflow.com/questions/629435

  •  08-07-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

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

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

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

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


Обновить:

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

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

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

Это было полезно?

Решение

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

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

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

На что следует обратить внимание:

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top