Login
достать картинку из базы данных
198
NEW 07.03.07 19:43
Я загружаю картинку с веб-страницы в базу данных (PostgreSQL), сохраняю в двоичном коде (тип bytea). Как мне ее теперь оттуда достать и сохранить, например в папке Temp? Пишу я всё в JSP.
NEW 07.03.07 20:03
in Antwort tavy 07.03.07 19:43
А что конкретно вызывает затруднения? Чтение из БД, запись на диск, или интеграция сего в JSP?
NEW 07.03.07 22:07
in Antwort scorpi_ 07.03.07 20:03
Чтение и запись. Я нашла кой-какой код в интернете, но либо кусками, либо слишком большой, там уже сразу супер-картинку выдают. А вот просто сохранить - такого почему-то нет : (.
NEW 08.03.07 07:28
in Antwort tavy 07.03.07 22:07
Хм.. По ключевым словам 'jdbc binary' первая же ссылка - http://jdbc.postgresql.org/documentation/80/binary-data.html. Пойдёт?
NEW 08.03.07 10:09
in Antwort scorpi_ 08.03.07 07:28
Этот код
PreparedStatement ps = conn.prepareStatement("SELECT img FROM images WHERE imgname = ?");
ps.setString(1, "myimage.gif");
ResultSet rs = ps.executeQuery();
while (rs.next()) {
byte[] imgBytes = rs.getBytes(1);
// use the data in some way here
}
rs.close();
ps.close();
я уже видела. Меня интересует с места // use the data in some way here
как собрать и сохранить картинку?
PreparedStatement ps = conn.prepareStatement("SELECT img FROM images WHERE imgname = ?");
ps.setString(1, "myimage.gif");
ResultSet rs = ps.executeQuery();
while (rs.next()) {
byte[] imgBytes = rs.getBytes(1);
// use the data in some way here
}
rs.close();
ps.close();
я уже видела. Меня интересует с места // use the data in some way here
как собрать и сохранить картинку?
NEW 08.03.07 10:55
in Antwort tavy 08.03.07 10:09
NEW 08.03.07 12:57
in Antwort tavy 08.03.07 10:09
Берём FileOutputStream, вызываем метод write c аргументом imgBytes, закрываем FileOutputStream.
NEW 09.03.07 11:27
in Antwort tavy 07.03.07 19:43
Сорри, что немного не в тему, но храннить картинку в базе в двоичном виде непрактично, потому что бза со вренем может очень распухнуть. Не проще картинку хранить на диске, а в базе хранить имя картинки как стринг, читать имя файла из базы, а картинку грузить потом с диsка?
национализм(антисемитизм и т.д) - это не кровь в жилах, это моча в голове
NEW 09.03.07 11:55
in Antwort Sanja.com.ua 09.03.07 11:27
это 1 из вечных вопросов-поводов для священных войн. Нельзя сказать однозначно. Почитай топеги на sql.ru, там на десятках страниц про это спорили :)
NEW 09.03.07 12:17
in Antwort digital.pilot 09.03.07 11:55
Вывод: хранить в базе картинку в ascii art :-D
NEW 09.03.07 12:51
in Antwort Simple 09.03.07 12:17
Нефига - конвертить перед сохранением в хех-код с добавлением контрольной суммы...
NEW 09.03.07 16:20
in Antwort Sanja.com.ua 09.03.07 11:27
как шеф скажет, так и делаю : )
Всё равно концепция изменилась, теперь в БД надо сохранить путь до картинки, а картинку сразу сохранять в Temp. И теперь вопрос. А это как делать?
Всё равно концепция изменилась, теперь в БД надо сохранить путь до картинки, а картинку сразу сохранять в Temp. И теперь вопрос. А это как делать?
NEW 09.03.07 17:19
in Antwort tavy 09.03.07 16:20
А это как делать?
-----
Хочешь узнать, что будет следующим? А очень просто - следующим будет раздача прав на просмотр картинок в ТЕМП'е посредством SQL-запросов...
По вопросу - тебе уже отвечали как байт-аррай сбросить в файл...
-----
Хочешь узнать, что будет следующим? А очень просто - следующим будет раздача прав на просмотр картинок в ТЕМП'е посредством SQL-запросов...

По вопросу - тебе уже отвечали как байт-аррай сбросить в файл...
09.03.07 18:26
in Antwort tavy 09.03.07 16:20
Проверяем content-type у запроса, если он multipart, то вызываем getInputStream(), читаем через него данные в byte[], а дальше как я уже писал.
Или качаем один из специализированных классов - http://www.servlets.com/cos/javadoc/com/oreilly/servlet/MultipartRequest.html, http://jakarta.apache.org/commons/fileupload/
Или качаем один из специализированных классов - http://www.servlets.com/cos/javadoc/com/oreilly/servlet/MultipartRequest.html, http://jakarta.apache.org/commons/fileupload/