c# - 开发文件存储 Web 应用程序

标签 c# asp.net windows filesystems

我目前正在开发一个网络应用程序,其主要用户功能是上传和下载文件。这些文件将存储在硬盘上(还没有云存储)。

考虑到千兆字节的数据和大量文件的可能性,我是否需要将文件组织到子文件夹中以考虑文件的获取,或者文件系统的索引是否已经非常有效并且我可以忽略它潜在的瓶颈?

更新:

附带说明一下,我计划将文件名和任何其他信息存储在 SQL 数据库中,并且仅在用户真正想要下载文件时才查询磁盘。这就是我计划检索文件的方式:

FileStream stream = File.Open("C:\file.txt");
byte[] fileContent = new byte[stream.Length];
stream.Read(fileContent, 0, fileContent.Length;

将从数据库中检索任何文件信息。硬盘将仅用于保存和读取文件。

更新 2:

文件将以GUID + EXTENSION的形式保存在硬盘上,而实际的文件名存储在数据库中。

最佳答案

是的,您需要进一步分割文件以节省用于目录中文件枚举的时间,但使用此方法可以节省多少时间可能取决于您使用的操作系统。当您需要从一个文件夹中的数百个文件中请求一个文件时,Windows 会非常慢。我相信这是因为它会尝试读取所有文件的所有属性,如果它必须搜索它们的话。此外,对于此类应用程序,您可能需要担心文件版本、文件上传超时、文件感染病毒、对最终用户隐藏真实文件路径、不支持的 mime 类型等。

关于c# - 开发文件存储 Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3418322/

相关文章:

c# - 嵌套控件的事件未在 UserControl 中触发

windows - shell 扩展会导致我的程序崩溃吗?

c++ - 如何捕获内存异常?

c# - 模拟 Windows 的浏览器流量

c# - 如何在大型代码库中组织外部库

c# - 如何使用自定义条件从 Azure 删除日志?

c# - 使用自定义数据库而不是 ASPNETDB 的 ASP.NET MVC 身份验证?

asp.net - 将多个参数传递给 Web 服务时出现问题

Windows API 和 SendMessage()

c# - 在样式文件中使用 setter 覆盖控制资源