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