【问题标题】:Best practice in making file manager for user为用户制作文件管理器的最佳实践
【发布时间】:2026-01-15 14:05:02
【问题描述】:

我要为用户创建一个文件、资源管理器。我的网站提供服务帮助用户创建博客、网站并允许用户上传他们的资源。我将创建一个如下所示的文件夹结构。有什么建议吗?

usercontents
--user1
----folder1
----folder2
--user2
--user3
----my images

我应该使用数据库来索引这些文件吗?

【问题讨论】:

    标签: php file-upload file-management


    【解决方案1】:

    如果我要做这样的事情,首先我会做以下事情:

    • 将文件类型限制为我指定的几种(图像、mp3、mp4,也许是 swf);
    • 规范化用户名或将其限制为字母数字,这样我就不会出现用户名文件夹冲突;
    • 规范化文件名,使my awesome mp3 file (some comment here).mp3 变成my-awesome-mp3-file-some-comment-here.mp3
    • 检查文件名冲突,这样如果用户上传的文件与前一个文件同名,则不会发生覆盖(将重复的screenshot.png 转换为screenshot-2.png);
    • 绝对将子文件夹的处理转移到数据库中,使用户目录中的文件结构保持不变。

    进一步优化:

    • 在数据库中存储文件校验和以避免在文件系统上存储重复文件。将重复检查限制在自己的文件中。

    我写了一个社区驱动的文件共享网站,我认为它显示了。 :)

    【讨论】:

      【解决方案2】:

      使用数据库是有意义的,因为那时只有通过您的界面添加的文件才能查看(假设您正在从数据库中读取文件列表,而不是实际的文件系统)。

      【讨论】:

      • 好点。从数据库中读取列表也会减轻文件系统的负载。