Integração da API do YouTube ASP.NET - Faça upload de vídeo com uma única página

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

  •  08-07-2019
  •  | 
  •  

Pergunta

Estamos tentando usar a API do Google YouTube para fazer upload de vídeos do nosso site para o YouTube através do navegador diretamente.

A API funciona em duas etapas, na primeira etapa, precisamos criar um objeto de vídeo com todos os metadados como título, tags, descrição, categoria etc. Então precisamos enviar uma solicitação com este objeto para o YouTube e obter um objeto de token gerado como uma resposta. Este objeto simbólico tem um valor simbólico e um URL simbólico como seus membros.

Na segunda etapa, eles sugerem que devemos criar um formulário com o atributo de ação definido para o URL do token. Este formulário deve ter um controle de upload de arquivo e um campo oculto com o valor do token como seu valor. Quando este formulário é publicado, ele carregava o vídeo no YouTube.

Isso funciona muito bem se o tivermos como um processo de duas etapas, pedindo aos usuários os metadados primeiro e depois redirecionando -os para a segunda página para o upload de vídeo real. No entanto, estamos tentando fazer isso em uma única página, aparecendo como uma única etapa para o usuário.

Temos uma página master com o 'aspnetform' especificado nele, por causa do qual não podemos ter outra forma com runat='server' propriedade.

Tentamos modificar o atributo de ação do ASPNETFROM usando JavaScript/Code-Behind, mas permanece o mesmo, o que fizermos.

Também tentamos colocar outro formulário aninhado, cuja tag de ação seria definida no evento de clique no botão, após a primeira resposta do YouTube com o token ser recebido. Mas mesmo isso não funciona, pois o formulário não é criado no momento em que esse método é chamado ..

Tentamos várias abordagens, mas nenhuma parece funcionar. Alguma sugestão sobre isso seria ótima.

Se você tiver mais alguma dúvida para entender a situação claramente .. por favor me avise ..


Atualizar:

Obrigado pelas respostas pessoal.

Mudamos a lógica de negócios um pouco para resolver o problema. Já estava há muito tempo e não estou procurando uma resolução a partir de agora ..

No entanto, a questão ainda está aberta e obtendo respostas. Eu realmente aprecio toda a ajuda e, portanto, deixaria a pergunta em aberto para mais discussões.

Foi útil?

Solução

Eu criaria um formulário que você exibe para o usuário com campos de texto para os metadados e um controle de upload de arquivo para o vídeo.

Então, no código que lida com o postback, você pode enviar os metadados para a API do YouTube para obter o valor do token.

Você então cria um Httpwebrequest com o valor do token passado para o Create Método do WebRequest objeto e defina o Method propriedade para Post. Você então adiciona o vídeo carregado (veja Resposta do Dr. Evil para "Faça o upload de arquivos com httpwebrequest (multipart/form-data)" para mais uma caminhada disso), e quando você liga GetResponse() Seu arquivo será enviado.

Coisas a serem observadas:

  1. ScriptTimeout: Se você está permitindo que seus usuários enviem arquivos grandes no YouTube - se demorar um pouco para você transmiti -lo, seu script poderá ser encerrado prematuramente.
  2. Largura de banda: você terá o upload para seus servidores e, em seguida, o upload para o YouTube para explicar - permitindo que o usuário faça o upload diretamente para o YouTube em um processo de duas etapas, você nunca toca no vídeo e nunca chega perto de seus servidores - Isso pode ser um problema para você ou seu provedor de hospedagem - por exemplo, meu host não conta o tráfego através do FTP na minha largura de banda mensal, mas inclui arquivos enviados/baixados no site.

Outras dicas

Você pode postar no formulário do YouTube programaticamente. Recentemente, modifiquei o exemplo encontrado em http://www.codeproject.com/kb/cs/uploadfileex.aspx Para escrever algum código que postou um arquivo em um site de terceiros como um emprego noturno.

Isso envolveria um desempenho de desempenho, pois o arquivo teria que ser carregado no seu servidor e, em seguida, no YouTube, em vez de diretamente no YouTube, mas é uma opção.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top