gpt4 book ai didi

c# - 如何在 IIS 网络服务器上使用 MVC.NET 存储用户上传的文件?

转载 作者:太空宇宙 更新时间:2023-11-03 12:52:18 25 4
gpt4 key购买 nike

我们正在开发一个教育网站,允许用户(教师和学生)上传文件(.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 的数据后,如果我们添加一个额外的硬盘驱动器,我们应该如何管理更改?

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

最佳答案

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

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

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

其他需要注意的问题是当其中一个硬盘驱动器失效时的游戏计划!如果您的硬盘驱动器没有 RAID 1 配置,您的可用性将直线下降至 NADA。

队列问题编号 2...可用性!= 备份...您需要考虑您打算如何备份系统、频率、一天中的什么时间等的游戏计划...数据越多你有,这变得越困难......

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

关于c# - 如何在 IIS 网络服务器上使用 MVC.NET 存储用户上传的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35113539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com