powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / URL на blob-image из запроса
17 сообщений из 17, страница 1 из 1
URL на blob-image из запроса
    #37284040
Andrewshkovskii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица с blob, в блобе лежит картинка. Необходимо через запрос получать url на это картинку, и этот юрл подставлять в src img.
Как это можно реализовать? Изображение не нужно выводить в репорте, нужна именно ссылка на изображение, что бы img её отобразил.
...
Рейтинг: 0 / 0
URL на blob-image из запроса
    #37284160
Andrewshkovskii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал как написано тут у Денеса.не получилось, возможно что-то с гнатами-синонимами напутал, но изображение не отображается...
...
Рейтинг: 0 / 0
URL на blob-image из запроса
    #37284217
SvUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мало данных.
Там же есть ссылка на тему, где уже даны необходимые советы.

Andrewshkovskiiвозможно что-то с гнатами-синонимами напутал, но изображение не отображается...
Под другим пользователем можно законнектиться, да проверить, работает синоним или нет.
Например под APEX_PUBLIC_USER (или anonymous в зависимости от способа установки)

PS можно попробовать немного переделать по-другому, ссылку делать на страницу 0, с указанием request,
а через application process с условием на request, before header, вызывать этот код.
...
Рейтинг: 0 / 0
URL на blob-image из запроса
    #37284904
freeek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andrewshkovskii,
а почему именно img?
...
Рейтинг: 0 / 0
URL на blob-image из запроса
    #37285101
Andrewshkovskii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Потому что нужно именно в тег img вставить, изображений на странице много будет , около 1000.
Создавал процедуру под sys, как
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE OR REPLACE PROCEDURE my_image_display (p_image_id IN NUMBER)
AS
   l_mime        VARCHAR2 ( 255 );
   l_length      NUMBER;
   l_file_name   VARCHAR2 ( 2000 );
   lob_loc       BLOB;
BEGIN
   SELECT GIR_OPERATION_IMAGE_MIMETYPE,GIR_OPERATION_IMAGE, GIR_OPERATION_IMAGE_FILENAME, DBMS_LOB.getlength (GIR_OPERATION_IMAGE)
     INTO l_mime, lob_loc, l_file_name, l_length
     FROM GIR.GIR_OPERATION
    WHERE GIR_OPERATION_ID = p_image_id;

   OWA_UTIL.mime_header (NVL (l_mime, 'application/octet'), FALSE);
   HTP.p ('Content-length: ' || l_length);
   OWA_UTIL.http_header_close;
   WPG_DOCLOAD.download_file (lob_loc);
END my_image_display;

потом сделал синоним под SYS и GIR
Код: plaintext
CREATE PUBLIC SYNONYM my_image_display FOR GIR.my_image_display;

и сделал грант под SYS
Код: plaintext
GRANT EXECUTE ON my_image_display TO PUBLIC; 

При обращении по URL вот так
http://localhost:8080/apex/GIR.my_image_display?p_image_id=2
вылазит 403.
А вот так http://localhost:8080/apex/SYS.my_image_display?p_image_id=2 идет 404.
А в регионе
<img src="#OWNER#.my_image_display?p_image_id=2" /> вовсе не отображается.
Но при вот таком раскладе под пользователем GIR
Код: plaintext
1.
2.
3.
begin
MY_IMAGE_DISPLAY( 2 );
end;
Возвращается содержимое файла-изображения, например вот это :
автор�PNG IHDRK�4sRGB���gAMA���a pHYs���o�dfIDATHK��9!CQ�i ���v(�wn^�Rs���@m��ɖi� �b-��­-B, -�-r,�Y dZ"tZ:�Y)h��а@�z� ���ܲj�S��IEND�B`�

Это достаточно полная информация? : )
...
Рейтинг: 0 / 0
URL на blob-image из запроса
    #37285188
Andrewshkovskii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так же пробовал законектиться через APEX_PUBLIC_USER , через pl/sql developer,
выполняя код
Код: plaintext
1.
2.
begin
MY_IMAGE_DISPLAY( 2 );
end;
получал вот это :
...
Рейтинг: 0 / 0
URL на blob-image из запроса
    #37285202
Andrewshkovskii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так же пробовал законектиться через APEX_PUBLIC_USER , через pl/sql developer,
выполняя код
Код: plaintext
1.
2.
begin
MY_IMAGE_DISPLAY( 2 );
end;
получал вот это :
...
Рейтинг: 0 / 0
URL на blob-image из запроса
    #37285322
PITMOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чтобы работали такие процедуры и функции их надо прописывать в WWV_FLOW_EPG_INCLUDE_MODULES в вашей схеме apex_040000 или подобной.
...
Рейтинг: 0 / 0
URL на blob-image из запроса
    #37285326
SvUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
no_data_found сам непонял,

по поводу 403 скорее всего где-то дело вот в этом http://download.oracle.com/docs/cd/B25329_01/doc/appdev.102/b25309/adm_wrkspc.htm#BEJCGJFJ
или см. соответствующий тип web-сервера.

Если неохота разбираться, можно без всяких грантов и доп. настроек через страницу 0 переделать, как я написал выше.
...
Рейтинг: 0 / 0
URL на blob-image из запроса
    #37285344
SvUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
т.е. не no_data_found, а numeric error, грантов не хватает видимо.
...
Рейтинг: 0 / 0
URL на blob-image из запроса
    #37285551
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewshkovskiiСоздавал процедуру под sys

Не надо зазря захламлять схему SYS .

По сабжу: RTFM About Configuring Oracle HTTP Server with mod_plsql for Oracle Application Express , Restricting Access to Oracle Application Express by Database Access Descriptor (DAD) .
...
Рейтинг: 0 / 0
URL на blob-image из запроса
    #37286231
Andrewshkovskii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PITMOV , подробнее можно?
SvUser , через 0 страницу не получится наверное, т..к изображений много на результирующей странице.
А как с грантами?
Вообще у меня апекс листнер работает через глассфиш , и я так понимаю никакого там Pl/sql gateway нету в моей схеме, или я не прав?
...
Рейтинг: 0 / 0
URL на blob-image из запроса
    #37286317
SvUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andrewshkovskiiчерез 0 страницу не получится наверное, т..к изображений много на результирующей странице.
Вопрос не в том, получится или не получится, а в том какой подход ближе.
image id можно передавать как часть request, например :request like 'IMAGE_ID=%'; image_id := substr(:request,...);
Количество изображений не имеет значения.

AndrewshkovskiiВообще у меня апекс листнер работает через глассфиш , и я так понимаю никакого там Pl/sql gateway нету в моей схеме, или я не прав?
Либо то, либо другое. опять же см. документацию,
http://www.oracle.com/technetwork/developer-tools/apex-listener/documentation/index.html
раздел Configuring Security
...
Рейтинг: 0 / 0
URL на blob-image из запроса
    #37286321
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewshkovskiiВообще у меня апекс листнер работает через глассфиш , и я так понимаю никакого там Pl/sql gateway нету в моей схеме, или я не прав?

По APEX Listener тоже есть руководство , в котором рассказывается о настройке.

автор About Allowed Procedures

Use Allowed Procedures to specify procedures, packages, or schema names that can be
executed from the Web browser.
To specify Allowed Procedures:
1. Click the Security tab.
2. Click Allowed Procedures to expand or hide the content.
3. In Inclusion list, enter the procedure name or procedure patterns separated by
commas.
Note that the wildcard characters asterisk (*) and question mark (?) are
supported. Use an asterisk (*) to substitute zero or more characters and a question
mark (?) to substitute for any one character.

Database Validation Function

You can specify the Database Validation Function which determines if the requested procedure in the URL should be allowed for processing. The APEX Listener will execute the Validation Function for each requested procedure or check the security cache to determine if a procedure is valid or invalid. Refer to Security Cache for additional information.

Click on the Database Validation Function header to expand or collapse the content. Specify the name of the Database Validation Function. The Database Validation Function is a stored function that resides in the database. If the Database Validation Function does not exist, then an error message will be displayed.

The Database Validation Function should return true if the procedure is allowed for processing; otherwise, returns false.
If this field is left blank, then the APEX Listener does not validate the procedure name to determine if the procedure should be allowed for processing.
...
Рейтинг: 0 / 0
URL на blob-image из запроса
    #37286368
Andrewshkovskii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
suPPLer,
Не могу понять под каким пользователем логиниться в http://localhost:8080/apex/listenerAdmin , ни админка от апекса, ни sys не подходят.
...
Рейтинг: 0 / 0
URL на blob-image из запроса
    #37286374
Andrewshkovskii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andrewshkovskii,

мда, попробовал зайти под adminlistener и получил "HTTP Status 403 - Access to the requested resource has been denied"
...
Рейтинг: 0 / 0
URL на blob-image из запроса
    #37286488
Andrewshkovskii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andrewshkovskii,

Пофиксил, через конфиг файл правда (apex/apex-config.xml) , прописал процедуры в инклюжин лист через scheme_name.* (т.е. все процедуры этой схемы..). Всем спасибо за помощь.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / URL на blob-image из запроса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]