【发布时间】:2013-07-08 21:46:58
【问题描述】:
我想使用文件条目组件将图像保存到数据库(带有 JPA 连接的 postgres)和 JSF。我正在搜索它,所以我想我必须使用输入流,但我不知道如何使用它将图像转换为 bytea 类型以保存到名为例如封面书(bytea)的列中的数据库中. bean 中应该有什么代码。请帮我。我有这样的事情:
【问题讨论】:
标签: postgresql jpa jsf-2 icefaces-3
我想使用文件条目组件将图像保存到数据库(带有 JPA 连接的 postgres)和 JSF。我正在搜索它,所以我想我必须使用输入流,但我不知道如何使用它将图像转换为 bytea 类型以保存到名为例如封面书(bytea)的列中的数据库中. bean 中应该有什么代码。请帮我。我有这样的事情:
【问题讨论】:
标签: postgresql jpa jsf-2 icefaces-3
您正试图一次完成所有操作。一步一步把它分解成你可以自己理解的部分。
首先确保接收图像并将其存储到本地文件有效。这部分有很多现有的例子。
然后弄清楚如何在您的 JPA 实现中映射 bytea 并从磁盘存储/检索文件。您没有提及您使用的是哪个 JPA 提供程序,因此很难具体说明这一点。
最后,通过直接从流中写入将两者连接起来,但前提是您知道这两个部分本身可以正常工作。此时您会发现,如果您想使用bytea 字段,您不能实际上将流直接发送到数据库——您必须将整个文件作为字节缓冲区提取到内存中。
如果您希望能够对数据库中的文件进行流式 I/O,您可以使用 PostgreSQL 对"large objects" 的支持来实现。但是,您不太可能通过 JPA 使用它;您必须使用 JDBC using the PgJDBC extensions for large object suppport 直接管理数据库中的文件。您必须从连接池中解包 Connection 对象,以获取可以转换为 PgConnection 的底层 Connection 以便访问此 API。
如果您对任何个别部分感到困惑,请随时发布有关该部分的适当详细和具体的问题;如果您链接回这个问题,这将有助于人们理解上下文。就目前而言,这是一个非常广泛的“向我展示如何使用 X 和 Y 到 Z 的技术”,需要编写(或查找)完整的教程来回答。
【讨论】: