3

我正在使用多部分表单、Apache FileUpload 等上传文件。它工作正常。

但是,我想知道在服务器中保存文件时的最佳做法或常见做法是什么,具体如下:

  • 命名服务器中的文件(即:什么名字更好?一些UUID生成,或者我插入文件关联数据时db表生成的行ID)
  • 服务器内文件的最佳位置(什么更好?即在 linux 服务器中我应该使用哪个文件夹或分区。我必须加密上传的文件吗?)
  • 当我放置一个链接以从浏览器访问文件时:直接访问还是使用 servlet 更好?
4

2 回答 2

1
  1. 如果你这样做(文件系统中的文件,数据库中的元数据),那么文件名的行 ID 不是一个坏主意(至少它确保了唯一性)。不幸的是,您必须注意文件系统和数据库是否同步,因此需要仔细编码。
  2. 如果您关心性能文件可以存储在单独的 HDD(或 NAS)上。请注意,如果文件数量很大(数千个),则不应将所有文件放在一个文件夹中,而应将它们分组到子文件夹中,每个子文件夹最多包含数百个文件。如果文件数量变大,它将确保低访问时间。加密的使用应取决于您的业务需求(文件是否包含机密数据?)。
  3. Servlet 是一种更好的方式,因为它对客户端隐藏了真实的存储细节,并且它更能证明应用程序未来的变化。它还有其他一些好处(例如,您可以实现访问控制,在浏览器/代理中获得开箱即用的缓存等)。如果您使用加密,这是必须的。
于 2012-09-28T11:47:54.187 回答
0

在服务器文件系统操作反复出现问题(缺少权限、不同平台上的不同行为)之后,我建议将文件数据作为 BLOB 填充到数据库中。这样,您无需详细说明独特的文件命名方案,所有敏感数据都将位于一个位置。

在这种情况下,您将需要一个用于下载的 servlet,恕我直言,即使是访问存储在文件中的数据,它也是更好的方法。

于 2012-09-28T11:15:22.943 回答