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