5

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

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

<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>

如果是这样,为了安全起见,过滤掉文件名的最佳方法是什么?还是我目前的做法是最佳做法?

4

2 回答 2

1

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

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

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

于 2008-12-01T19:15:20.517 回答
0

我建议你把它从 web_app_root 中取出。

我喜欢你在第一个例子中的做法。

于 2008-12-01T19:27:35.580 回答