如何使用Java和PostgreSQL在webapplication中保存、检索和绘制图像?

如何使用Java和PostgreSQL在webapplication中保存、检索和绘制图像?,java,jsp,postgresql,servlets,Java,Jsp,Postgresql,Servlets,给定一个对象X;我希望这个对象有一个图像。图像必须存储在数据库中。我无法存储路径,实际图像必须在数据库中 我的问题可以通过回答以下子问题来回答: a) 。我应该在数据库中输入什么类型的字段?(例如VARCHAR) b) 我应该使用什么类型的对象来存储和操作图像(在对象层)?(例如java.awt.Image) c) 如何从数据库中获取的数据创建所选类型(问题b的答案)的对象 d) 如何将所选类型的对象(问题b的答案)保存到数据库中 e) 如何在网页上绘制图像 我使用的是PostgreSQL、Ja

给定一个对象X;我希望这个对象有一个图像。图像必须存储在数据库中。我无法存储路径,实际图像必须在数据库中

我的问题可以通过回答以下子问题来回答:

a) 。我应该在数据库中输入什么类型的字段?(例如VARCHAR)

b) 我应该使用什么类型的对象来存储和操作图像(在对象层)?(例如java.awt.Image)

c) 如何从数据库中获取的数据创建所选类型(问题b的答案)的对象

d) 如何将所选类型的对象(问题b的答案)保存到数据库中

e) 如何在网页上绘制图像

我使用的是PostgreSQL、Java,它是一个web应用程序

谢谢

a) 我应该在数据库中输入什么类型的字段?(例如VARCHAR)

图像是二进制数据。只需使用一个二进制字段。在PostgreSQL中,它是

b) 我应该使用什么类型的对象来存储和操作图像(在对象层)?(例如java.awt.Image)

使用或
字节[]
存储它。Java2D API有一些类/方法,可以接受/返回这些类型中的任何一种

c) 如何从数据库中获取的数据创建所选类型(问题b的答案)的对象

用于获取它的
InputStream
,或获取它的
字节[]

d) 如何将所选类型的对象(问题b的答案)保存到数据库中

使用或。注意:如果您还不熟悉JDBC/
PreparedStatement
,那么我建议您完成以下步骤

e) 如何在网页上绘制图像

使用HTML
指向与
Servlet
URL模式相匹配的URL。您可以将图像标识符作为请求参数或路径信息传递。在
Servlet
中,您只需将获得的
InputStream
写入响应的
OutputStream
。您可以在我不久前发布的文章中找到一个代码示例



也就是说,在数据库中只存储原始图像通常不是一个好主意。您最好也将一些元数据存储在响应头中,例如(例如,
image/jpeg
image/gif
,等等),这样浏览器就知道如何处理它了。

您可以将对象另存为PostGreSQL blob。它们可以作为二进制数据存储在数据库中。
我可以帮忙。然后,您可以使用Servlet OutputStream编写二进制输入。这可能会有所帮助。

步骤1:不要在数据库中存储图像。这就是文件系统的用途……是的,我知道。我四处查看,每个人都说不要把它存储在数据库中,但这是一个学校项目,我被要求这样做。谢谢将图像存储在数据库中很好,如果您的所有鸡蛋都放在一个篮子里,那么它可以简化备份/恢复计划。话虽如此,如果您使用这个数据库来支持通过HTTP提供图像服务,那么您需要在DB之外有某种缓存。非常彻底