让Url指向静态文件

时间:2013-05-14 19:52:50

标签: html5 video asp.net-mvc-4

我有一个mvc4应用程序向客户端提供我的HTML 5代码。我使用 HTML 5 视频标记来显示视频。通常我会将视频文件放入我的应用程序根目录来访问它,但现在我想实现另一个场景。我的应用的根目录是C:\MyApp,而视频文件位于目录C:\VideoDir中。

现在我想使用视频标记并将其作为源代码传递给

  

http://myurl/MyApp/Media/Video/test.mp4

我需要找到一种方法将此网址重定向到VideoDir内部的实际视频文件,而不会通过http向公众展示VideoDir。这种方法的原因是,我想在提供视频之前检查权限。如果我通过http向公众展示VideoDir,任何知道baseurl的人都可以观看他/她想要的任何视频。

我使用FileContentResultFilePathResultFileStreamResult进行了一些测试。 Chrome可以处理结果,但是无法寻找,甚至最糟糕的是,iOS的Safari视频标签无法使用这些结果,而它可能会消耗原始的.mp4文件。

有任何想法或建议吗?

2 个答案:

答案 0 :(得分:0)

在IIS中,在App文件夹中添加虚拟目录,其名称为以下

媒体

现在您可以访问如下所示的视频文件

http://myurl/MyApp/Media/Video/test.mp4

注意 - 请在App中添加虚拟目录并命名将指向VideoDir的虚拟目录媒体

希望这会对你有所帮助

答案 1 :(得分:0)

查看<video>标记发送的标题后,我发现此问题的解决方案是处理范围请求。总结一下:我的问题对于这个问题来说是一个重复的问题:c# streaming over http to iphone

要使用mvc4工作,您需要忽略* .mp4扩展名,因此它由您自己的处理程序处理,而不是由mvc4处理。只需在RegisterRoutes方法中执行以下行:

routes.IgnoreRoute("{file}.mp4");

Application_Start方法中的以下内容:

RouteTable.Routes.IgnoreRoute("{file}.mp4");

(信用到:Using ASP.NET routing to serve static files