保存服务器上的文件

时间:2012-01-28 16:56:07

标签: c# asp.net

我正在为我的课程开发一个项目网站。这是一个拥有大量用户的系统,每个用户都可以在服务器上传文件。现在我有两种实施方式:

  1. 创建一个包含名称文件的文件夹,并在其中上传文件并从中检索。
  2. 每个用户都有一个不同的文件夹并上传文件。
  3. 第二种方式的实现很容易,但我认为创建大量文件夹(每个用户都有不同的文件夹)可能会降低每个人尝试从服务器加载它们时的速度。

    你的意见是什么? 什么方式更好?

3 个答案:

答案 0 :(得分:1)

更好的方法是拥有一个名为uploads的文件夹。

每次用户上传文件时,都会生成GUID,并将此GUID指定为文件名。这将确保文件名永远不会发生冲突。

保存文件后,将以下内容存储在数据库中:用户提供的原始文件名,文件的GUID名称和用户ID。

您现在可以通过首先从数据库中查找GUID然后从文件系统中提取文件来检索任何用户上传的文件。

您可以使用Guid.NewGuid()方法生成GUID。

答案 1 :(得分:0)

基本上,使用外键保存数据库中FileUser的关联。例如:

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。