c# - 用户上传的文件存放在哪里?
问题描述
故事:用户可以上传私人文件(pdf),例如他的简历。他还需要能够查看他上传的文件。我知道数据库会变慢,所以我想将文件存储在文件系统中。但是我应该将文件存储在哪里,这样它是安全的,其他用户无法访问它。我应该在我的项目/解决方案中创建一个目录还是在我的项目之外创建一个目录。或者我应该将它全部存储在 WWWROOT 中。有人可以给我建议吗?
我有一个 ASP.NET CORE mvc 应用程序。我想将文件名和路径存储在数据库中。上传的文件需要存储在文件系统中。
解决方案
您可以存储在 wwwroot 并让每个人都可以访问它或自定义文件夹。
考虑安全问题,您可以检查用户角色或添加一些中间件来限制用户对该文件夹的访问。
或使用
静态文件中间件不提供授权检查。它提供的任何文件,包括 wwwroot 下的文件,都可以公开访问。根据授权提供文件:
将它们存储在 wwwroot 和静态文件中间件可访问的任何目录之外。
通过应用授权的操作方法为他们提供服务。返回一个 FileResult 对象
[Authorize]
public IActionResult BannerImage()
{
var file = Path.Combine(Directory.GetCurrentDirectory(),
"MyStaticFiles", "images", "banner1.svg");
return PhysicalFile(file, "image/svg+xml");
}
推荐阅读
- c - 在 C 中,是否应将标头中的内联函数外部化到 .c 文件中?
- json - 从 DRF 序列化器返回序列化的 JSON
- bash - 保留 bash 样式变量的简单配置文件模板处理器
- python - 在 Python 中将下载文件的 MD5 与 SFTP 服务器上的文件进行比较
- mysql - `sum() over()` 没有/有 `order by`
- java - Spring bean 通过方法初始化
- sql - 如何加入删除连字符以匹配其他表
- reactjs - React Typescript列表映射表行未呈现
- r - 闪亮模块中的反应输入启动警告
- python - Flask-socketio AttributeError:“请求”对象没有属性“sid”