当我将带有图像的丰富字符串内容保存到数据库时,我遇到了一个问题,为此,我手头有一些解决方案:
- 先将字符串内容的图片放到硬盘上,并保存包含这些图片路径的字符串内容,稍后在页面上显示丰富的字符串内容有两种方式:
- 如果图像包含在带有绝对路径的字符串内容中,我们会直接将其显示在页面上,但这种方式可能会遇到域名URL更改的问题,这意味着如果我们的系统部署在另一个机器或 URL,这些图像无法再正确显示
- 如果图片包含在带有相对路径的字符串内容中,为了保证字符串内容能够显示在所有路径页面上,我们需要在图片路径前面动态添加域名路径,这会导致性能低且复杂
- 使用支持存储字符串和图像流的新型列,但我不确定这是否现实
我使用Java语言进行编程,使用MySQL作为数据库。那么对我来说最好的方法是什么?我知道这是 Web 开发中的常见情况。
非常感谢。
最佳答案
据我所知,目前 RDBMS 中没有直接的方法来实现方法二。没有可以同时存储字母数字和字节的数据类型。
你只有方法一。正如您所指出的,两者都有优点和缺点。但我不建议采用建议的两种方法(绝对路径与相对路径),而是建议采用以下方法。
- 将数据库中的所有图像保存在单独的表中。 (这允许您控制上传图像的大小,并且当迁移到不同系统时,仅需要数据库迁移,不需要文件系统迁移)。表可以包含列 id、文件名、扩展名、mime_type、长度等。
- 有一个服务方法将您的图像文件保存在数据库表中并返回唯一的图像 ID。
- 为图像检索创建一个单独的 GET 方法,例如:-
http://localhost/image/{id}
,它将返回第二步返回的 id 的图像。
当您获得带有图像的丰富内容时,使用步骤 2 创建的服务方法保存图像,然后获取 id,将其附加到步骤 3 中创建的图像检索 url,并将其放入丰富内容中,然后将其另存为文本值。
例如:-
Abc def <img src="/image/{id}">
希望这能解决您的问题。
关于java - 如何更好地将丰富的字符串内容和图像保存到数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25800357/