在文件系统中存储上传文件的最佳实践

时间:2008-12-01 19:10:00

标签: filesystems uploading

有关存储用户上传文件的最佳做法是什么?

目前,我正在使用以下方法存储文件:

<web_app_root>/course_material/<term_id>/<course_id>/<file_id>

如您所见,文件是根据数据库中的密钥存储的。我认为这更安全,因为我不必过滤文件名并将不安全的字符转换为安全字符。

然而,我正在开始一个新项目,并想知道将Web应用程序的文件系统与数据库紧密联系起来是不是一个坏主意。我应该以更易读的格式存储文件吗?

<web_app_root>/course_material/<term_name_underscored>/<course_name_underscored>/<file_name_underscored>

如果是这样,过滤掉文件名以保证安全的最佳方法是什么?或者我目前的做法是最佳做法?

2 个答案:

答案 0 :(得分:1)

我总是将文件存储在具有唯一基于GUID的文件名的目录中,并将guid映射到数据库中的文件。只要您不是手动浏览文件等,这可能是最简单的解决方案(也可以解决无效字符)。

另一种选择是将它们作为BLOBS存储在数据库中。我也做了这个 - 但它是为了填补复制的DR场景,现代NAS设备应该处理它。

如果您因某种原因发现需要手动浏览应用程序外的文件,那么使用长名称或短名称(无论您想要浏览它们)都会更清晰。

答案 1 :(得分:0)

我建议你从web_app_root中取出。

我喜欢你在第一个例子中的表现。