2009-10-02 28 views
0

在YouTube上你知道,一旦你上传了一个视频,它会要求你使它成为公共或私人。公众认为它可以被任何人访问。私人只有你自己的原始上传者,你也必须登录才能这样做。我需要做出与此类似的东西。我正在制作一个使用QuickTime渐进式下载而不是Flash的Rails应用程序,因此基本上我使用一个嵌入式标记,其中src指向一些dns/video.mov。但我不可能让这些视频进入公共领域。什么可以成为我的选择?私有化视频流

回答

0

用户登录时创建会话cookie。此cookie通常包含某种会话ID(长字符串)。将该ID作为查询附加到电影的URL(.../video.mov?ID=2387543462578)。

这样,您的服务器可以检查ID与当前打开的会话。如果ID无效,则回复403(禁止)。

[编辑]由于您将文件放入Rails_root/public/videos,Ruby会自动为您处理下载到浏览器。这是放入public文件夹中的任何文件的默认行为。你需要的是把文件放在不同的地方并手动处理下载。检查Ruby源代码并查找public文件夹的处理程序;这应该让你知道它是如何工作的。您应该可以使用一些附加代码来扩展此类,以检查用户是否可以真正下载文件。

+0

在我的Rails应用程序中,既有身份验证又有授权,至此我可以告诉谁可以使用哪些操作。我的印象是,例如,我在Rails_root/public/videos下有一个名为“video”的用户视频文件夹。所以abc.mov现在可以直接通过地址栏中的dns/videos/abc.mov访问。 Rails似乎并不知道这件事发生了。如果我不把视频放在公共文件夹中,这可以防止这种情况发生,但我无法将其嵌入到普通用户页面中,因为嵌入了SRC属性,我需要为该页面提供url视频到。我怎样才能使用你的方法? – 2009-10-02 19:44:58

+0

查看我的编辑:您需要为其他网址添加处理程序,以便任何人都不再公开视频。 – 2009-10-05 08:00:06