如何更好地保存数据库中的图像丰富的字符串内容?

时间:2014-09-12 03:39:27

标签: java mysql database string image

当我将带图像的丰富字符串内容保存到数据库中时,我得到一个问题,为此我手头有一些解决方案:

  • 首先将字符串内容的图像放在硬盘上,然后保存包含这些图像的字符串内容'路径,以及稍后在页面上显示丰富的字符串内容有两种方法:
    • 如果图片包含在绝对路径的字符串内容中,我们会直接在页面上显示它,但这种方式可能会遇到域URL更改的问题,这意味着如果我们的系统部署在另一个机器或URL,这些图像无法再正确显示
    • 如果图像包含在相对路径的字符串内容中,为了确保可以在所有路径页面上显示字符串内容,我们需要在图像路径前面动态添加域路径,这会导致性能低且复杂
  • 使用支持存储字符串和图像流的新类型列,但我不确定这是否真实

我使用Java语言编程,MySQL使用数据库。那么对我来说最好的方法是什么?我知道这是Web开发中的常见情况。

非常感谢。

1 个答案:

答案 0 :(得分:0)

据我所知,目前在方法二的RDBMS中没有直接的方法。没有数据类型可以存储字母数字和字节。

你只有方法一。正如你所指出的那样,两者都有利有弊。但是,我建议不要采用建议的两种方法(绝对路径与相对路径)。

  1. 将所有图像保存在单独的表中的数据库中。 (这允许您控制正在上载的映像的大小,并且在迁移到不同系统时,仅需要数据库迁移,不需要进行文件系统迁移)。表可以包含列id,文件名,扩展名,mime_type,长度等。
  2. 使用Service方法将您的Image文件保存在Database表中,并返回唯一的图像ID。
  3. 为图像检索创建一个单独的GET方法,例如: - http://localhost/image/{id},它将返回第二步返回id的图像。
  4. 当您获得带图像的丰富内容时,使用第二步创建的服务方法保存图像,然后获取ID,将其附加到步骤3中创建的图像检索网址并将其放入您的丰富内容中,然后将其另存为文本值。

    例如: -

    Abc def <img src="/image/{id}"> 
    

    希望这能解决您的问题。