首页 > 解决方案 > 用户上传的文件存放在哪里?

问题描述

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

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

标签: c#asp.net-mvcasp.net-corefile-uploadauthorization

解决方案


您可以存储在 wwwroot 并让每个人都可以访问它或自定义文件夹。

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

或使用

静态文件授权

静态文件中间件不提供授权检查。它提供的任何文件,包括 wwwroot 下的文件,都可以公开访问。根据授权提供文件:

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

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

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

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

推荐阅读