我们正在一个教育网站,该网站允许用户(教师和学生)上传文件(.PDF,.DOCX,png格式和...)工作MVC.NET。我们在这方面没有任何经验,并希望能够正确地存储和索引这些文件,我们希望有一个能够很好地适应大容量数据的体系结构。
目前我们店的路径,我们的文件在数据库中像下面(Nvarchar(MAX)
):存储用户上传的文件上使用IIS web服务器
~/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倍TB的存储空间,存储1点TB的数据,如果我们添加一个额外的硬盘驱动器,我们应该如何管理变更后?
我们搜索了很多,但没有找到正确的架构的任何好的教程或指导。
对不起我的英文不好。
您可能想考虑某种“云”存储,如[Amazon S3](https://aws.amazon.com/s3/)或[Azure Blob存储](https://azure.microsoft.com/zh-cn/ -gb /服务/存储/斑点/)。这些脚本足够简单,可以集成到MVC应用程序中,并具有附加的好处,即如果您的网站有多个托管在不同服务器上的实例,则所有实例都可以访问共享存储。 –
由于@darth_phoenixx提到像azure这样的云服务,亚马逊将成为比本地存储更好,更具可扩展性的解决方案。如果你重新考虑教师和学生将要上传大量文件(重的文件),那么你也可以考虑将此任务卸载到单独的上传服务/队列中,这样可以减轻应用服务器的负担。 –
@darth_phoenixx我的国家无法访问Azure Blob存储... – Oli