如何使用Java和PostgreSQL在webapplication中保存、检索和绘制图像?
给定一个对象X;我希望这个对象有一个图像。图像必须存储在数据库中。我无法存储路径,实际图像必须在数据库中 我的问题可以通过回答以下子问题来回答: a) 。我应该在数据库中输入什么类型的字段?(例如VARCHAR) b) 我应该使用什么类型的对象来存储和操作图像(在对象层)?(例如java.awt.Image) c) 如何从数据库中获取的数据创建所选类型(问题b的答案)的对象 d) 如何将所选类型的对象(问题b的答案)保存到数据库中 e) 如何在网页上绘制图像 我使用的是PostgreSQL、Java,它是一个web应用程序 谢谢 a) 我应该在数据库中输入什么类型的字段?(例如VARCHAR) 图像是二进制数据。只需使用一个二进制字段。在PostgreSQL中,它是 b) 我应该使用什么类型的对象来存储和操作图像(在对象层)?(例如java.awt.Image) 使用或如何使用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
字节[]
存储它。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之外有某种缓存。非常彻底