如何在 IIS Web 服务器上使用 MVC.NET 存储用户上载的文件

本文关键字:存储 NET MVC 用户 上载 文件 IIS Web 服务器 | 更新日期: 2023-09-27 18:32:47

我们正在开发一个教育网站,允许用户(教师和学生(上传文件(.pdf,.docx,.png和...(。我们在这方面没有任何经验,并希望确保我们做正确的事情来存储和索引这些文件。我们希望有一个能够很好地扩展到大量数据的架构。
目前我们将文件的路径存储在数据库中,如下所示(Nvarchar(MAX)(:

~/Files/UserPhotos/2fd7199b-a491-433d-acf9-56ce54b6b14f_168467team-03.png  

我们使用以下代码来保存和检索文件:

  //save:
 file.SaveAs(Server.MapPath("~/Files/UserPhotos/") + fileName);    
 //retrieve:
<img alt="" src="@Url.Content(Model.FilePath)">  

现在我们的问题是:

  1. 我们是否朝着好的方向前进?
  2. 我们应该将文件保存在根目录还是虚拟目录中?
  3. 想象一下我们的服务器有 1 TB 的存储空间,在存储 1 TB 数据后,如果我们添加一个额外的硬盘驱动器,我们应该如何管理更改?

我们搜索了很多,但没有找到任何关于正确架构的好教程或指南。
对不起,我的英语不好。

如何在 IIS Web 服务器上使用 MVC.NET 存储用户上载的文件

在理想情况下,你将使用云存储,例如 Azure Blob 存储,如果这不是一个选项,那么我的做法是创建一个单独的 Web 服务,专门处理上传的文件和文件存储。

通过创建一个单独的 Web 服务来管理文件存储,您将隔离您的问题,该服务可以监控硬盘存储空间并在上传文档时平衡它们,将来如果您添加其他服务器...您已经分离了您的服务,因此它不会像您不这样做时那样一团糟。

您可以在上传文件时为 SQL 数据存储中的所有内容编制索引。你的问题实际上比我刚才提到的要复杂得多......

其他需要注意的问题是游戏计划是否或何时其中一个硬盘驱动器出现故障!如果没有硬盘驱动器的 RAID 1 配置,您的可用性将直线下降到 NADA。

队列问题 2... 可用性 != 备份...您需要考虑您的游戏计划,包括您打算如何备份系统、多久备份一次、在一天中的什么时间等......您拥有的数据越多,这就越困难...

这就是为什么每个人都转向Azure/AWS等......你再也不用担心这些事情了......

1.我通常以这种方式保存文件:

file.SaveAs(Server.MapPath("/Files/UserPhotos/") + fileName); 

2.it 最好将其保存在虚拟目录中,以便您可以将文件夹移动到新的额外硬盘,并在此文件夹中的文件过多时更改虚拟目录在IIS中的路径。