Re: import_bytea function

Поиск
Список
Период
Сортировка
От Thomas Kellerer
Тема Re: import_bytea function
Дата
Msg-id nt7lnp$l9m$1@blaine.gmane.org
обсуждение исходный текст
Ответ на import_bytea function  (Stephen Davies <sdavies@sdc.com.au>)
Ответы Re: import_bytea function  (Stephen Davies <sdavies@sdc.com.au>)
Список pgsql-general
Stephen Davies schrieb am 07.10.2016 um 09:12:
> I am trying to use the import_bytea function described in various list posts (PG version 9.3.14) in a jsp.
>
> I get an error saying that only the super user can use server-side lo_import().
>
> If I change the Java connection to use user postgres, the function works but I would prefer not to do this.
>
> Is there a better way to update a bytea column from an uploaded file (in this case a small jpeg)?

Since you mention JSP, I assume you are using JDBC.

You can store the contents of a file in a bytea using plain JDBC no lo_import() required

    String sql = "insert into images (id, image_data) values (?,?)";
    Connection con = ....;
    File uploaded = new File("...");
    InputStream in = new FileInputStream(uploaded);
    PreparedStatement pstmt = con.prepareStatement(sql);
    pstmt.setInt(1, 42);
    pstmt.setBinaryStream(in, (int)uploaded.length());
    pstmt.executeUpdate();

This *only* works with bytea column, not with "large objects".

In production code you obviously need to close all resources and handle errors.
I left that out for simplicity.

Thomas



В списке pgsql-general по дате отправления:

Предыдущее
От: Stephen Davies
Дата:
Сообщение: import_bytea function
Следующее
От: Stephen Davies
Дата:
Сообщение: Re: import_bytea function