我正在创建一个数据库应用程序(除其他外),它允许用户上传和下载文件。这些文件存储在文件服务器上,我已经使用 PHP 脚本设置了一个 Apache HTTP 服务器来处理(即上传和下载)文件。数据库只存储文件的链接,而不是文件本身。我的问题是:我应该如何组织文件服务器上的文件?
目前,我正在根据当前日期创建一个目录结构,并使用当前日期/时间(包括毫秒)的 MD5 哈希值加上一些随机字符(即我添加“salt”)重命名文件:
\\yyyy\mm\dd\debb40da158040e4f3b93f9576840c07
这个(上面)是存储在数据库中的链接(当然,我也将真实的文件名存储在数据库中,以便在用户下载文件时重命名文件——用户永远看不到实际的文件名)关联)。
我使用yyyy\mm\dd
目录结构来避免性能问题(我被告知同一目录中的很多文件会减慢速度)并且我用唯一的字符串重命名文件以避免在用户上传具有相同名称的文件时发生冲突。
我想就在这种情况下处理文件存储的最佳方式获得其他意见。我已经看到一些开发人员保留文件名,但在文件信息表中附加(作为前缀)相应行的数据库 ID ---我看到了这种方法的一些优点,因为文件名是“人类可读的”并且如果数据库文件信息表被损坏或删除,您可以弄清楚这些文件是什么。