我正在为我的课程开发一个项目网站。这是一个拥有大量用户的系统,每个用户都可以在服务器上传文件。现在我有两种实施方式:
第二种方式的实现很容易,但我认为创建大量文件夹(每个用户都有不同的文件夹)可能会降低每个人尝试从服务器加载它们时的速度。
你的意见是什么? 什么方式更好?
答案 0 :(得分:1)
更好的方法是拥有一个名为uploads
的文件夹。
每次用户上传文件时,都会生成GUID,并将此GUID指定为文件名。这将确保文件名永远不会发生冲突。
保存文件后,将以下内容存储在数据库中:用户提供的原始文件名,文件的GUID名称和用户ID。
您现在可以通过首先从数据库中查找GUID然后从文件系统中提取文件来检索任何用户上传的文件。
您可以使用Guid.NewGuid()
方法生成GUID。
答案 1 :(得分:0)
基本上,使用外键保存数据库中File
和User
的关联。例如:
File
--------
FileId int
UserId (FK) int
PathToFile nvarchar
然后,只需将路径保存到表中的文件中,并将实际文件保存在计算机文件系统中。
然后在您的应用程序中,您可以检索User Foo
的文件列表并轻松提供。
该过程因ASP.Net Webforms和ASP.Net MVC而异。你在用哪个?
答案 2 :(得分:0)
我没有看到选择#2的任何重大问题。请注意enumerating collections of files and directories will give you better performance than arrays。在文件名中附加一个guid将使文件名保持唯一。您可以在向用户下载文件时从文件名中删除该guid。