2

我的应用程序架构如下所示。我有一个用于管理网上商店的桌面 Java 应用程序。这包括创建产品并将它们的图像上传到保存产品的应用程序服务器。我为此使用ejbs。

这是第一个也是主要的问题。应该如何添加/上传图像?很多建议说您不应该将图像保存为 blob,因为这会破坏性能,尤其是当您有大量读取时,例如此处。另一方面,不鼓励保存到文件系统,因为这会破坏模块化,EJB 不应该这样做。这些是非常反对的建议。另一方面,如果我想byte[]为一个Product班级保存多个文件 ( ),我不知道该怎么做。List 似乎不正确,abyte[][]将如何持久化?所有在线示例仅适用于一个文件/图像。

这个问题是另一个问题。根据图像的保存方式,我应该如何在 Web 应用程序中获取它们?发送它们时,它们应该以某种方式“缓存”,因此它们可以被热链接或者当用户单击它们时它们是缩略图。

4

2 回答 2

2

回答有关通过 Web 应用程序获取存储在 Web 服务器中的图像的部分。

在 Web 应用程序中实现一个过滤器类,它将url 映射到存储在文件系统或 blob 中的实际图像。url 应该包含对图像 id 的引用,并且过滤器应该知道如何使用图像 id 检索实际图像。此外,如果您保持此路径一致并具有适当的过期标头,则浏览器将负责缓存图像。

我个人更喜欢将图像存储在文件系统而不是数据库中,因为数据库没有针对这种东西进行优化。请参阅在 DB 中存储图像 - 是还是不是?用于决定是否将图像存储为 blob 或文件。

于 2013-06-11T14:51:52.237 回答
1

尽量保持简单和务实;-)

我同意不将图片保存在 BLOB 中,只需将它们上传到目录,而是在数据库中管理它们。

例如:上传图片到服务器,为其文件名生成一个唯一的id并保存。然后将 ID 添加到图像数据库并将其链接到文章数据库。因此,您可以在一个产品上管理多个图像的 1..N 关系,这些图像易于获取和实施。此外,后期删除文章的管理支持更轻松地删除、更新图像等。

此外,尽量不要以任何方式使用代表产品的文件名/链接。您可能希望为多篇文章/产品使用相同的图像。

于 2013-06-12T07:49:35.437 回答