YouTube API集成ASP.NET – 使用单页上传video

我们正在尝试使用Google YouTube API直接通过浏览器将video从我们的网站上传到YouTube。

API分两步完成,第一步我们需要创建一个Video对象,其中包含标题,标签,描述,类别等所有元数据。然后我们需要将带有此对象的请求发送到YouTube并生成令牌对象作为回应。 此令牌对象具有令牌值和令牌URL作为其成员。

在第二步中,他们建议我们应该创建一个Form,其action属性设置为Token URL。 此表单应具有文件上载控件和隐藏字段,其中标记值为其值。 发布此表单后,会将video上传到YouTube。

如果我们将它作为一个两步过程,首先向用户询问元数据,然后将它们重定向到第二页以进行实际的video上传,这非常有用。 但是,我们尝试在单个页面中完成此操作,向用户显示为单个步骤。

我们有一个MasterPage,其中指定了’aspnetForm’,因此我们不能使用runat='server'属性的另一个表单。

我们尝试使用JavaScript /代码隐藏来修改aspnetFrom的action属性,但无论我们做什么,它都保持不变。

在收到带有令牌的YouTube的第一个回复后,我们还尝试放置另一个嵌套表单,其操作标记将设置在按钮点击事件上。 但即使这样也行不通,因为在调用此方法时不会创建表单。

我们已经尝试了几种方法,但似乎没有一种方法。任何有关这方面的建议都会很棒。

如果您有任何疑问需要清楚了解情况..请告诉我..


更新:

谢谢你们的回应。

我们稍微改变了业务逻辑以解决问题。 它很久以前了,我现在还没有找到解决方案。

但是,问题仍然是开放的并得到回应。 我非常感谢所有的帮助,因此,我们可以将问题留待进一步讨论。

我将创建一个表单,向用户显示元数据的文本字段和video的文件上载控件。

然后,在处理回发的代码中,您可以将元数据提交到YouTube API以获取令牌值。

然后,您Create一个HttpWebRequest ,并将令牌值传递给WebRequest对象的Create方法,并将Method属性设置为Post 。 然后添加上传的video(请参阅dr evil的回答“使用HTTPWebrequest上传文件(multipart / form-data)”以获取更多信息),当您调用GetResponse()您的文件将被提交。

需要注意的事项:

  1. ScriptTimeout :如果您允许用户将大型文件上传到YouTube – 如果您需要一段时间来传输它,那么您的脚本可能会提前终止。
  2. 带宽:您可以同时上传到您的服务器,然后上传到YouTube进行注册 – 允许用户通过两个步骤直接上传到YouTube,您从不触摸video,而且它永远不会靠近您的服务器 – 对于您或您的托管服务提供商而言,这可能是一个问题 – 例如,我的主机不会在我的月带宽中通过FTP计算流量,但包括通过网站上传/下载的文件。

您可以以编程方式发布到YouTube表单。 我最近修改了http://www.codeproject.com/KB/cs/uploadfileex.aspx上的示例,编写了一些代码,将一个文件发布到第三方网站作为夜间工作。

这会导致性能下降,因为文件必须上传到您的服务器,然后上传到YouTube而不是直接上传到YouTube,但这是一个选项。