Pregunta

estamos intentando utilizar la API de Google YouTube para subir videos desde nuestro sitio web a YouTube a través del navegador directamente.

La API funciona en dos pasos, en el primer paso necesitamos crear un objeto Video con todos los metadatos como título, etiquetas, descripción, categoría, etc. Luego, debemos enviar una solicitud con este objeto a YouTube y obtener un Objeto de token generado como respuesta. Este objeto de token tiene un valor de token y una URL de token como miembros.

En el segundo paso, sugieren que deberíamos crear un formulario con el atributo de acción establecido en la URL del token. Este formulario debe tener un control de carga de archivos y un campo oculto con el valor de token como su valor. Cuando se publique este formulario, subiría el video a YouTube.

Esto funciona muy bien si lo tenemos como un proceso de dos pasos, solicitando primero a los usuarios los metadatos y luego redirigiéndolos a la segunda página para la carga real del video. Sin embargo, estamos tratando de lograr esto en una sola página, apareciendo como un solo paso para el usuario.

Tenemos un MasterPage con el 'aspnetForm' especificado en él, por lo que no podemos tener otro formulario con la propiedad runat = 'server' .

Hemos intentado modificar el atributo de acción de aspnetFrom usando JavaScript / código subyacente, pero permanece igual, hagamos lo que hagamos.

También hemos tratado de poner otro formulario anidado, cuya etiqueta de acción se establecería en el evento de clic del botón, después de que se reciba la primera respuesta de YouTube con el token. Pero incluso esto no funciona, ya que el formulario no se crea en el momento en que se llama a este método ...

Hemos probado varios enfoques, pero ninguno parece funcionar ... cualquier sugerencia al respecto sería genial.

Si tiene más preguntas para entender la situación con claridad ... por favor avíseme ...


Actualización:

Gracias por las respuestas chicos.

Cambiamos un poco la lógica de negocios para resolver el problema. Hace mucho tiempo y no estoy buscando una resolución a partir de ahora ..

Sin embargo, la pregunta aún está abierta y obtiene respuestas. Realmente aprecio toda la ayuda y, por lo tanto, dejaría la pregunta abierta para cualquier discusión adicional.

¿Fue útil?

Solución

Crearía un formulario que le mostraría al usuario con campos de texto para los metadatos y un control de carga de archivos para el video.

Luego, en el código que maneja la devolución, puede enviar los metadatos a la API de YouTube para obtener el valor del token.

Luego crea un HttpWebRequest con el El valor de token se pasa al método Crear del objeto WebRequest y establece la propiedad Method en Post . Luego agrega el video cargado (consulte respuesta de dr evil a " Cargue archivos con HTTPWebrequest (multipart / form-data) " para obtener más información sobre eso), y cuando llame a GetResponse () se enviará su archivo.

Cosas a tener en cuenta:

  1. ScriptTimeout : si permite que sus usuarios carguen archivos de gran tamaño en YouTube; si tarda un tiempo en transmitirlo, entonces su secuencia de comandos podría finalizar prematuramente.
  2. Ancho de banda: tendrá tanto la carga en sus servidores como la carga en YouTube para tener en cuenta: al permitir que el usuario cargue directamente en YouTube en un proceso de dos pasos, nunca toca el video y nunca se acerca sus servidores, esto podría ser un problema para usted o su proveedor de alojamiento; por ejemplo, mi host no cuenta el tráfico a través de FTP en mi ancho de banda mensual, pero incluye archivos cargados / descargados a través del sitio web.

Otros consejos

Puede publicar en el formulario de YouTube mediante programación. Recientemente modifiqué el ejemplo que se encuentra en http://www.codeproject.com/KB/cs /uploadfileex.aspx para escribir un código que publique un archivo en un sitio web de un tercero como un trabajo nocturno.

Esto implicaría un impacto en el rendimiento ya que el archivo tendría que cargarse a su servidor y luego a YouTube en lugar de directamente a YouTube, pero es una opción.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top