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

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

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

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

我们有一个MasterPage,其中指定了'aspnetForm',因此我们无法使用 runat ='server'属性创建另一个表单。

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

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

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

如果您有任何其他问题要清楚了解情况,请告诉我..


更新

感谢回复人员。

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

然而,问题仍然是开放的并得到回应。我非常感谢所有的帮助,因此,我们可以提出任何进一步讨论的问题。

有帮助吗?

解决方案

我会创建一个表单,向用户显示元数据的文本字段和视频的文件上传控件。

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

然后用 HttpWebRequest 制作一个令牌值传递到 WebRequest 对象的 Create 方法,并将 Method 属性设置为 Post 。然后添加上传的视频(请参阅 dr evil的回答“使用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