Попытка сохранить изображение из веб-сервиса в базе данных Postgresql

Я пытаюсь сохранить изображение в базе данных Postgresql, но не могу этого сделать, я пытаюсь вызвать функцию, в которой мне нужно передать изображение в байт-коде.

функция для сохранения изображения

CREATE OR REPLACE FUNCTION products_update_image(product_id character varying, img bytea)
RETURNS void AS
'BEGIN UPDATE PRODUCTS SET IMAGE=img::bytea WHERE ID=product_id; END;'
    LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION products_update_image(character varying, bytea)
  OWNER TO postgres;

1 ответ

Решение

Ответ на этот вопрос очень прост. Недавно я также работал над этим и столкнулся с той же проблемой, с которой вы столкнулись, вы можете использовать приведенный ниже код.

// Save an image from server to physical location
String destinationFile = "C:\\Program Files (x86)\\openbravopos-2.30.2\\image1.jpg";

// This will call a function which will save an image on your given Location
saveImage(image, destinationFile);

// You don't need to call procedure here just pass this query
PreparedStatement pstmt = con.prepareStatement("UPDATE PRODUCTS SET IMAGE = ? WHERE ID = ?");

// Location of image with it's name
File file = new File("Location\\image1.jpg");
FileInputStream in = new FileInputStream(file);
try
{
    pstmt.setBinaryStream(1, in, (int) file.length());
    pstmt.setString(2, id);
    pstmt.executeUpdate();
}
catch (Exception ee)
{
    System.out.println("Exception is:- " + ee);
}

// Функция, которая сохранила изображение в локальном местоположении

public static void saveImage(String imageUrl, String destinationFile) throws IOException
{
    URL url = new URL(imageUrl);
    InputStream is = url.openStream();
    OutputStream os = new FileOutputStream(destinationFile);

    byte[] b = new byte[2048];
    int length;

    while ((length = is.read(b)) != -1)
    {
        os.write(b, 0, length);
    }

    is.close();
    os.close();
}

Я надеюсь, что это сработает для вас, так как это сработало для меня

Другие вопросы по тегам