【问题标题】:how to save an image to a database using Icefaces 3.0.1 FileEntry component如何使用 Icefaces 3.0.1 FileEntry 组件将图像保存到数据库
【发布时间】:2013-07-08 21:46:58
【问题描述】:

我想使用文件条目组件将图像保存到数据库(带有 JPA 连接的 postgres)和 JSF。我正在搜索它,所以我想我必须使用输入流,但我不知道如何使用它将图像转换为 bytea 类型以保存到名为例如封面书(bytea)的列中的数据库中. bean 中应该有什么代码。请帮我。我有这样的事情:

Icefaces 3.0.1 FileEntry: FileEntryListener is never called

【问题讨论】:

    标签: postgresql jpa jsf-2 icefaces-3


    【解决方案1】:

    您正试图一次完成所有操作。一步一步把它分解成你可以自己理解的部分。

    首先确保接收图像并将其存储到本地文件有效。这部分有很多现有的例子。

    然后弄清楚如何在您的 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 的技术”,需要编写(或查找)完整的教程来回答。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-07
      • 1970-01-01
      • 1970-01-01
      • 2019-01-22
      • 1970-01-01
      • 2015-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多