首页 > 解决方案 > 如何限制对asp.net MVC中视频文件的直接访问

问题描述

在我的项目中,我有一个上传文件夹,用户在其中上传视频文件,然后通过 HTML5 视频播放器从该文件夹中查看它。但是如果一个真实的用户浏览 www.mysite.com/Upload/videofilename.mp4 那么视频也会被显示。我想限制对视频文件夹的直接访问。有什么办法吗?

标签: asp.net-mvc

解决方案


您必须在 Web 配置中为Upload文件夹设置hiddenSegments 。您也可以通过 IIS 进行设置。YourSite > 请求过滤 > 隐藏段。设置隐藏段后,任何人都无法使用 url 访问文件。

网络配置

 <security>
      <requestFiltering>
        <hiddenSegments>
          <add segment="Upload"/>
        </hiddenSegments>
      </requestFiltering>
    </security>

查看页面

<video width="320" height="240" controls>    
    <source src="@Url.Action("GetMedia","Home")" type="video/mp4" />
</video>

代码

    [Authorize]
    public ActionResult GetMedia()
    {
        string fn = Server.MapPath("~/Upload/1.mp4");
        var memoryStream = new MemoryStream(System.IO.File.ReadAllBytes(fn));
        return new FileStreamResult(memoryStream, MimeMapping.GetMimeMapping(System.IO.Path.GetFileName(fn)));
    }

推荐阅读