| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > ms access - image - jsp |
| Автор: dementiev 9.6.2009, 07:25 | ||||||||
| Всем привет. Не получается вывести картинку, которая лежит в базе Access в поле "Поле объекта OLE". Там лежит именно картинка, а не путь к ней. Эти темы просмотрел: http://forum.vingrad.ru/forum/topic-99699/...mage/index.html http://forum.vingrad.ru/forum/topic-54327/...mage/index.html), вроде сделал так же, но результат нулевой. Как достаю из БД:
код сервлета для передачи картиник на jsp:
код testPicture.jsp:
код сервлета для отображения картинки в response:
Добавлено через 45 секунд я решал похожую задачу, но тогда содержал в базе пути к картинкам - проблем не было. Здесь надо обязательно держать целую картинку в базе. Подскажите, в чём проблема в примере. |
| Автор: dementiev 9.6.2009, 16:09 |
| Мне надо хранить в базе сами жпеги, не ссылки. Поле объекта OLE не подходит для этого? Если же подходит, то каким образом из него извлечь жпег, что не так в моём примере? |
| Автор: tux 9.6.2009, 16:59 | ||||
Я видимо не понимаю грандиозности задумки. Зачем вы полученный из запроса параметр:
пишите в респонс в качестве картинки:
Насколько я понял нужно писать нечто добытое из базы. |
| Автор: dementiev 9.6.2009, 20:27 |
| tux, спасибо за отклик. По вопросу: мне надо в цикле на jsp вывести много объектов, у каждого своя картинка, т.е. нельзя залпом вывести 10 картинок, а надо так:картинка, другие поля объетка, картинка нового объекта. Насколько я понял, это такой "стандартный приём", когда сервлету дают в качестве параметра картинку, а он её пишет в респонс. Мне тут подсказали, что поле ole-db не подходит для этого, надо использовать memo. Вернее сказали, что ole не содержит напрямую jpeg, а надо через сложности его выковыривать(причём библиотеки платные). По поводу работы jsp и сервлета, я думаю, всё нормально, т.к. таким же образом я выводил картинки (но тогда я знал путь к ней). Думаю, проблема в том, что я получаю объект из resultSet в object, далее делаю из него string(когда достаю из request), потом делаю у строки .getBytes(). Видимо, где-то в этой цепочке я что-то делаю не так. Что - понять не могу, опыта мало |
| Автор: tux 9.6.2009, 20:50 | ||||
OMG, никогда не думал что такое можно придумать. Что ж все так сложно-то? Тут проблемы практически на каждом этапе.
Сервлет получает этот идентификатор, читает из базы картинку, и пишет в респонс как у вас и сделано. То есть URL будет выглядеть так:
Со способом хранения изображений в Access к сожалению не могу помочь, в глаза ее не видел. |
| Автор: dementiev 9.6.2009, 21:25 |
| намудрил я по поводу access есть БОЛЬШАЯ проблема: blob там нету. Надо использовать "Поле объекта OLE (OLE object)" - а к нему из жавы очень муторный подход. Надо использовать jni вроде бы. |
| Автор: tux 9.6.2009, 21:41 |
А просто какого-нить байтового массива нет? Здесь вроде удалось сохранить и получить - http://forums.sun.com/thread.jspa?threadID=722827. Хотя гораздо лучше конечно хранить изображения в файловой системе, тем более когда имеешь дело с Access. |
| Автор: dementiev 9.6.2009, 22:31 |
| спасибо огромное. я ,честно, рыл много, этой ссылки не нашёл :( Это увеличит мой сон с 2х до нормальных 8ми часов А access, т.к. это курсовой, преподаватели часто оторваны от жизни, зато с принципами по выполнению тз Завтра обязательно отпишу, получилось ли. |
| Автор: dementiev 17.6.2009, 19:11 |
| Сделал по этому примеру http://forums.sun.com/thread.jspa?threadID=722827 В access создал поле типа ole db. Считывал и записывал двоичные данные, и в БД уже писался тип поля не как OLE DB, а как "Двоичные данные". Т.е. наверняка вообще неважно было, какого типа я создаю поле в access(типа "Двоичные данные" в конструкторе нету Если добавлять картинки через интерфейс access`a, то при считывании были проблемы(вернее, картинки не отображались). Пэтому и запись, и считывание - только программно. tux, ещё раз спасибо тебе. Вопрос решён. Поставьте, пожалуйста, тюксу за меня плюсик. |