JSP:将文件上载到服务器的最佳实践

我使用multipart表单,Apache FileUpload等上传文件。它运行正常。

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

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

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

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

在这种情况下,您将需要一个servlet进行下载,即使访问存储在文件中的数据,IMHO也是更好的方法。