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

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

PS можно попробовать немного переделать по-другому, ссылку делать на страницу 0, с указанием request,
а через application process с условием на request, before header, вызывать этот код.
...
Рейтинг: 0 / 0
30.05.2011, 10:32
    #37284904
freeek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
URL на blob-image из запроса
Andrewshkovskii,
а почему именно img?
...
Рейтинг: 0 / 0
30.05.2011, 11:57
    #37285101
Andrewshkovskii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
URL на blob-image из запроса
Потому что нужно именно в тег 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
30.05.2011, 12:37
    #37285188
Andrewshkovskii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
URL на blob-image из запроса
так же пробовал законектиться через APEX_PUBLIC_USER , через pl/sql developer,
выполняя код
Код: plaintext
1.
2.
begin
MY_IMAGE_DISPLAY( 2 );
end;
получал вот это :
...
Рейтинг: 0 / 0
30.05.2011, 12:41
    #37285202
Andrewshkovskii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
URL на blob-image из запроса
так же пробовал законектиться через APEX_PUBLIC_USER , через pl/sql developer,
выполняя код
Код: plaintext
1.
2.
begin
MY_IMAGE_DISPLAY( 2 );
end;
получал вот это :
...
Рейтинг: 0 / 0
30.05.2011, 13:32
    #37285322
PITMOV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
URL на blob-image из запроса
Чтобы работали такие процедуры и функции их надо прописывать в WWV_FLOW_EPG_INCLUDE_MODULES в вашей схеме apex_040000 или подобной.
...
Рейтинг: 0 / 0
30.05.2011, 13:32
    #37285326
SvUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
URL на blob-image из запроса
no_data_found сам непонял,

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

Если неохота разбираться, можно без всяких грантов и доп. настроек через страницу 0 переделать, как я написал выше.
...
Рейтинг: 0 / 0
30.05.2011, 13:39
    #37285344
SvUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
URL на blob-image из запроса
т.е. не no_data_found, а numeric error, грантов не хватает видимо.
...
Рейтинг: 0 / 0
30.05.2011, 15:14
    #37285551
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
URL на blob-image из запроса
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
30.05.2011, 20:08
    #37286231
Andrewshkovskii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
URL на blob-image из запроса
PITMOV , подробнее можно?
SvUser , через 0 страницу не получится наверное, т..к изображений много на результирующей странице.
А как с грантами?
Вообще у меня апекс листнер работает через глассфиш , и я так понимаю никакого там Pl/sql gateway нету в моей схеме, или я не прав?
...
Рейтинг: 0 / 0
30.05.2011, 21:34
    #37286317
SvUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
URL на blob-image из запроса
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
30.05.2011, 21:38
    #37286321
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
URL на blob-image из запроса
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
30.05.2011, 22:31
    #37286368
Andrewshkovskii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
URL на blob-image из запроса
suPPLer,
Не могу понять под каким пользователем логиниться в http://localhost:8080/apex/listenerAdmin , ни админка от апекса, ни sys не подходят.
...
Рейтинг: 0 / 0
30.05.2011, 22:40
    #37286374
Andrewshkovskii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
URL на blob-image из запроса
Andrewshkovskii,

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

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


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