我的应用程序(s')架构看起来像这样。我有一个用于管理Web商店的桌面Java应用程序。这包括创建产品并将图像上传到保留产品的应用程序服务器。我正在使用ejbs。
这是第一个也是主要问题。应该如何添加/上传图片?许多建议说你不应该将图像保存为blob,因为这会破坏性能,特别是当你有大量的读取时,例如这里。另一方面,不鼓励保存到文件系统,因为废旧模块化和EJB不应该这样做。这些是非常对立的建议。另一方面,如果我想为一个byte[]
类保存多个文件(Product
),我不知道该怎么做。列表似乎不正确,byte[][]
将如何保留?在线所有示例仅适用于一个文件/图像。
这个问题标记着另一个问题。根据图像的保存方式,我应该如何在Web应用程序中获取它们?发送它们时,它们应该以某种方式“缓存”,因此它们可以是热链接的,或者当用户点击它们时它们是缩略图。
答案 0 :(得分:2)
回答有关通过Web应用程序获取存储在Web服务器中的图像的部分。
在Web应用程序中实现一个过滤器类,它将将url映射到存储在文件系统或blob中的实际图像。网址应包含对图片ID的引用,过滤器应该知道如何使用图片ID检索实际图像。此外,如果您保持此路径一致并具有正确的过期标头,则浏览器将负责缓存图像。
我个人更喜欢将图像存储在文件系统而不是数据库中,因为数据库没有针对这种东西进行优化。 请参阅Storing Images in DB - Yea or Nay?以决定是将图像存储为blob还是文件。
答案 1 :(得分:1)
尽量保持简洁务实; - )
我同意不将图片保存在BLOB中只是将它们上传到目录,但是在数据库中管理它们。
例如:将图像上传到服务器,为其文件名生成唯一ID并保存。然后将ID添加到图像数据库并将其链接到文章数据库。因此,您可以在一个易于获取和实现的产品上管理多个图像的1..N关系。此后,删除文章的管理也支持更容易删除,更新图像等。
此外,请尝试不以任何方式使用代表产品的文件名/链接。您可能希望为多个文章/产品使用相同的图像。