用户上传的文件存储在哪里?

时间:2019-09-26 08:49:56

标签: c# asp.net-mvc asp.net-core file-upload authorization

故事:用户可以上传私人文件(pdf),例如他的简历。他还需要能够查看他上传的文件。我知道数据库会变慢,所以我想将文件存储在文件系统中。但是我应该将文件存储在何处,这样它是安全的,其他用户无法访问它。我应该在我的Project / Solution中创建一个目录还是在我的项目之外创建一个目录。还是应该将其全部存储在WWWROOT中。有人可以给我建议吗?

我有一个ASP.NET CORE mvc应用程序。我想将文件名和路径存储在数据库中。上传的文件需要存储在文件系统中。

1 个答案:

答案 0 :(得分:0)

您可以存储在wwwroot中,并允许所有人访问它或自定义文件夹。

考虑到安全问题,您可以检查用户角色或添加一些中间件来限制用户对该文件夹的访问。

或使用

Static file authorization

  

静态文件中间件不提供授权检查。任何   它提供的文件(包括wwwroot下的文件)是公开的   无障碍。要根据授权提供文件:

     

将它们存储在wwwroot以及目录可访问的任何目录之外   静态文件中间件。

     

通过应用了授权的操作方法为他们提供服务。   返回FileResult对象

[Authorize]
public IActionResult BannerImage()
{
    var file = Path.Combine(Directory.GetCurrentDirectory(), 
                            "MyStaticFiles", "images", "banner1.svg");

    return PhysicalFile(file, "image/svg+xml");
}