|
Проблема с показом изображений
|
|||
---|---|---|---|
#18+
Знаю что вопрос уже обсуждался, но похожие темы не помогли решить проблему. Имеется Oracle11g xe с Апексом. Пытаюсь вывести картинки в отчете и html-регионе(<img src="#OWNER#.MY_IMAGE_DISPLAY?p_image_id=82" />) как у Кубисека( http://htmldb.oracle.com/pls/otn/f?p=31517:64:1321460433089501::NO), но получается только так: Помогите разобраться пожалуйста в чем проблема. Таблица: CREATE TABLE "PICTABLE" ( "ID" NUMBER NOT NULL ENABLE, "MYFILE" BLOB, "FILENAME" VARCHAR2(255), "MIMETYPE" VARCHAR2(255), "FILEDATE" DATE, "DESCRIPTION" VARCHAR2(255), CONSTRAINT "PICTABLE_PK" PRIMARY KEY ("ID") ENABLE ) ; Процедура вывода изображения: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Привилегия и синоним созданы: GRANT EXECUTE ON my_image_display TO PUBLIC; CREATE PUBLIC SYNONYM my_image_display FOR shema_name.my_image_display; Region Sourse: select * from ( SELECT SUBSTR (FILENAME, INSTR (FILENAME, '/') + 1) FILENAME, '<img src="#OWNER#.my_image_display?p_image_id=' || NVL (ID, 0) || '" height="' || 100 || '" width="' || 150 || '" />' img, TO_CHAR (ID) id FROM PICTABLE) where ( instr(upper("FILENAME"),upper(nvl(:P1_REPORT_SEARCH,"FILENAME"))) > 0 or instr(upper("IMG"),upper(nvl(:P1_REPORT_SEARCH,"IMG"))) > 0 or instr(upper("ID"),upper(nvl(:P1_REPORT_SEARCH,"ID"))) > 0 ) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2012, 11:17 |
|
Проблема с показом изображений
|
|||
---|---|---|---|
#18+
anykeycheg, Вам обязательно пользоваться именно этой процедурой? Пожалуйста, посмотрите приложение Sample Database Application - обычно идет в поставке. В этом приложении страницы №3 (Products) и №6 (Products Details). На этих страницах выводятся список продуктов с фотографией (обратите внимание, что есть представление в виде таблицы, иконок и хитрого списка), а так же ввод этого продукта и фотографии. Внутри этого способа используется другая хранимая процедура, но уже входящая в пакет поставки. (Это если у Вас Apex 4 и выше) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2012, 11:39 |
|
Проблема с показом изображений
|
|||
---|---|---|---|
#18+
anykeycheg, В Вашем случае попробуйте еще поиграть с отображением столбца: в разделе Report Arritbutes, в пункте Column Attributes напротив столбца укажите в Display Text As значение Standart Report Column. (Скорее всего сейчас стоит Display as Text (excape special characters) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2012, 12:00 |
|
Проблема с показом изображений
|
|||
---|---|---|---|
#18+
emdidemdidanykeycheg, Вам обязательно пользоваться именно этой процедурой? (Это если у Вас Apex 4 и выше) Необязательно, но должна же работать. 4 Apex ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2012, 13:31 |
|
Проблема с показом изображений
|
|||
---|---|---|---|
#18+
emdidemdidanykeycheg, В Вашем случае попробуйте еще поиграть с отображением столбца: в разделе Report Arritbutes, в пункте Column Attributes напротив столбца укажите в Display Text As значение Standart Report Column. (Скорее всего сейчас стоит Display as Text (excape special characters) Сделал StandartReportColumn - показывает пустые картинки размерностью 100 на 150. html-регион без всякого форматирования должен показывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2012, 13:37 |
|
Проблема с показом изображений
|
|||
---|---|---|---|
#18+
По-моему у Вас в этом месте: anykeychegwhere ( instr(upper("FILENAME"),upper(nvl(:P1_REPORT_SEARCH,"FILENAME"))) > 0 or instr(upper("IMG"),upper(nvl(:P1_REPORT_SEARCH,"IMG"))) > 0 or instr(upper("ID"),upper(nvl(:P1_REPORT_SEARCH,"ID"))) > 0 ) написано что-то неразборчивое. Попробуйте жестко задать какой-то ID, которые гарантированно есть. Скорее всего у Вас изображение выведется. Пустые картинки - это значит функция ничего не смогла извлечь из базы. Все отработано верно. Теперь вопрос с другой стороны: а каким образом Вы заложили изображение в базу. (А есть ли оно у Вас там и почему Вы так считаете). ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2012, 15:31 |
|
Проблема с показом изображений
|
|||
---|---|---|---|
#18+
anykeycheg но должна же работать. Оно работает. Я именно по сайту Кубичека делал это на Apex 3.2. Выводилось успешно. Просто это вторая часть Марлезонского балета. Первая часть - правильно заложить картинку в базу. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2012, 15:33 |
|
Проблема с показом изображений
|
|||
---|---|---|---|
#18+
Делал загрузку картинок по примеру: http://applicationexpress.ru/apex-lessons/17-apex-lesson-13.html таблица: CREATE TABLE "PICTABLE" ( "ID" NUMBER NOT NULL ENABLE, "MYFILE" BLOB, "FILENAME" VARCHAR2(255), "MIMETYPE" VARCHAR2(255), "FILEDATE" DATE, "FILECHARSET" VARCHAR2(255), "DESCRIPTION" VARCHAR2(255), CONSTRAINT "PICTABLE_PK" PRIMARY KEY ("ID") ENABLE ) ; Создал Report and Form. В репорте в Report Attributes в поле MYFILE прописал маску Number / Date Format: IMAGE:PICTABLE:MYFILE:ID::MIMETYPE:FILENAME:FILEDATE:FILECHARSET:inline:Download В форме ввода в итеме P2_MYFILE поставил такие настройки: Картинки прекрасно загружаются, но при попытке вывода процедурой в HTML-регионе (<img src="#OWNER#.my_image_display?p_image_id=3" />) ничего не показывает: ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2012, 07:00 |
|
Проблема с показом изображений
|
|||
---|---|---|---|
#18+
anykeychegно при попытке вывода процедурой в HTML-регионе (<img src="#OWNER#.my_image_display?p_image_id=3" />) ничего не показывает Пожалуйста, посмотрите HTML код данного региона в готовой странице. Внутренний телепат говорит, что там будет написано именно <img src="#OWNER#.my_image_display?p_image_id=3" /> . То есть буквально то, что Вы указали региону. Теперь вопрос: заменится ли #OWNER# на нужную схему. Так как есть синоним этой процедуры на PUBLIC, попробуйте просто опустить #OWNER#. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2012, 11:32 |
|
Проблема с показом изображений
|
|||
---|---|---|---|
#18+
emdidemdidanykeychegно при попытке вывода процедурой в HTML-регионе (<img src="#OWNER#.my_image_display?p_image_id=3" />) ничего не показывает Пожалуйста, посмотрите HTML код данного региона в готовой странице. Внутренний телепат говорит, что там будет написано именно <img src="#OWNER#.my_image_display?p_image_id=3" /> . То есть буквально то, что Вы указали региону. Теперь вопрос: заменится ли #OWNER# на нужную схему. Так как есть синоним этой процедуры на PUBLIC, попробуйте просто опустить #OWNER#. Не помогло. Похожая проблема обсуждается в 6171638 , что-то связанное с функцией flows_030100.wwv_flow_epg_include_mod_local. Буду копать про нее. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2012, 13:16 |
|
Проблема с показом изображений
|
|||
---|---|---|---|
#18+
anykeycheg, Так что конкретно выводилось в HTML коде региона? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2012, 13:25 |
|
Проблема с показом изображений
|
|||
---|---|---|---|
#18+
Кусок html: Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Смотрел в просмотрщике html Хрома, выделил процедуру MY_IMAGE_DISPLAY и появилось сообщение: Not found The requested URL /apex/MY_IMAGE_DISPLAY was not found on this server ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2012, 13:40 |
|
Проблема с показом изображений
|
|||
---|---|---|---|
#18+
anykeycheg, Попробуйте вписать название схемы явно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2012, 14:31 |
|
Проблема с показом изображений
|
|||
---|---|---|---|
#18+
Тоже не выходит. Процедура валидная, begin MAGDBA.my_image_display(21); end; отрабатывает, может подскажете пожалуйста как проверить другим способом? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2012, 15:02 |
|
Проблема с показом изображений
|
|||
---|---|---|---|
#18+
anykeycheg, Попробуйте добавить стандартный элемент показа картинки. По-моему его можно настроить просто на BLOB. (Этот BLOB может возвращать запрос с параметром). Тогда размер картинки задавать в атрибутах. Сообщите результат, если получится. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2012, 15:05 |
|
Проблема с показом изображений
|
|||
---|---|---|---|
#18+
anykeycheg, Вот еще можно подергать wwv_flow_epg_include_mod_local В этих ссылках: http://dancingwithapex.blogspot.com/2010/01/calling-stored-procedures-from-apex.html http://www.adp-gmbh.ch/ora/plsql_gateway/ex_1.html И проверить в админских настройках о возможности вызова хранимой процедуры из строки браузера. Что-то смутно вспоминаю такую галку. (Или выдумываю) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2012, 15:19 |
|
Проблема с показом изображений
|
|||
---|---|---|---|
#18+
emdidemdidanykeycheg, Попробуйте добавить стандартный элемент показа картинки. По-моему его можно настроить просто на BLOB. (Этот BLOB может возвращать запрос с параметром). Тогда размер картинки задавать в атрибутах. Сообщите результат, если получится. Так работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2012, 08:42 |
|
Проблема с показом изображений
|
|||
---|---|---|---|
#18+
emdidemdid, большое Вам спасибо С помощью http://www.adp-gmbh.ch/ora/plsql_gateway/ex_1.html решил проблему. Под system в пользователе apex_040000 поменял функцию: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
и дал права Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2012, 09:46 |
|
Проблема с показом изображений
|
|||
---|---|---|---|
#18+
anykeycheg, Всегда пожалуйста! Только вот все это шаманство с нестандартным доступом и выдачей каких-то прав левым пользователям очень сильно не нравится. Типичный заднепроходный способ. Настоятельно рекомендую решить задачу еще раз только стандартным путем. Как указано в тестовом приложении Sample Database Application - обычно идет в поставке. В этом приложении страницы №3 (Products) и №6 (Products Details). На этих страницах выводятся список продуктов с фотографией (обратите внимание, что есть представление в виде таблицы, иконок и хитрого списка), а так же ввод этого продукта и фотографии. Я предпочитаю следовать рекомендациям авторов системы. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2012, 10:03 |
|
Проблема с показом изображений
|
|||
---|---|---|---|
#18+
emdidemdid, 1. anonymous не левый пользователь :) 2. способ не левый, а документирован RTFM Restricting Access to Oracle Application Express by Database Access Descriptor (DAD) Но способ плох тем, что зависит от сценария установки. Поэтому соб-но предпочитаю вызывать WPG_DOCLOAD не в public function, а в page/application process. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2012, 14:39 |
|
Проблема с показом изображений
|
|||
---|---|---|---|
#18+
SvDevemdidemdid, 1. anonymous не левый пользователь :) 2. способ не левый, а документирован RTFM Restricting Access to Oracle Application Express by Database Access Descriptor (DAD) Но способ плох тем, что зависит от сценария установки. Поэтому соб-но предпочитаю вызывать WPG_DOCLOAD не в public function, а в page/application process. 1. Наверное не левый (я читал в документации кто это), но какой-то вялый. Изначально ему этих прав не выдали. Видимо, были какие-то объективные причины. 2. Если внимательно прочитать Sample Application, то можно обойтись без всяких плясок с бубном. Для этого достаточно воспользоваться специально для этого созданной процедурой из общедоступного пакета. Чем указанная выше процедура лучше или хуже процедуры apex_util.get_blob_file_src из стандартной поставки apex? PS Очень сильно не люблю велосипеды. Не нужно чинить то, что не поломалось. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2012, 15:48 |
|
Проблема с показом изображений
|
|||
---|---|---|---|
#18+
emdidemdidЕсли внимательно прочитать Sample Application, то можно обойтись без всяких плясок с бубном Возможности апекса не заканчиваются на Sample Application emdidemdidЧем указанная выше процедура лучше или хуже процедуры apex_util.get_blob_file_src из стандартной поставки apex? Предпочитаю хранить пользовательские картинки и файлы в своих таблицах, а не в общей свалке emdidemdidPS Очень сильно не люблю велосипеды. Не нужно чинить то, что не поломалось. WPG_DOCLOAD - это более гибкий способ, которым можно управлять, по сравнению с apex_util.get_blob_file_src, apex_util.get_file и т.д., что мне уже пригодилось и не раз. Еще раз, читайте документацию. RTFM Downloading Documents from the Custom Table Сопутствующую документацию изучать тоже полезно PL/SQL Packages and Types Reference Fusion Middleware User's Guide for mod_plsql emdidemdid1. Наверное не левый (я читал в документации кто это), но какой-то вялый. Изначально ему этих прав не выдали. Видимо, были какие-то объективные причины. Можно использовать разные способы, не только public functions, как я уже сказал. Нет абсолютно ничего странного в отсутствии прав на вызов любых функций через url. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2012, 17:42 |
|
Проблема с показом изображений
|
|||
---|---|---|---|
#18+
SvDevВозможности апекса не заканчиваются на Sample Application Автор топика не указал, а я не увидел причин выходить за рамки Sample Application. Особого смысла (кроме потренироваться) во введении новой процедуры нет. Доскональное изучение Sample Application позволяет получить ответы на 95% потребностей разработки. SvDevemdidemdidЧем указанная выше процедура лучше или хуже процедуры apex_util.get_blob_file_src из стандартной поставки apex? Предпочитаю хранить пользовательские картинки и файлы в своих таблицах, а не в общей свалке Так и есть. В Sample Application изображения хранятся в собственной таблице, не в общей свалке. Я все же отвечу, почему apex_util.get_blob_file_src лучше: она уже есть и уже описана в документации. Не нужно плодить лишние сущности. SvDevWPG_DOCLOAD - это более гибкий способ... Да, возможностей больше. Но предпочитаю их использовать к месту, то есть там где не хватает рекомендуемых путей. SvDevЕще раз, читайте документацию. RTFM Downloading Documents from the Custom Table Сопутствующую документацию изучать тоже полезно PL/SQL Packages and Types Reference Fusion Middleware User's Guide for mod_plsql Эта документация известна. В приличных изданиях не дают ссылки на энциклопедии -- считается, что человек достаточно смышлен, чтобы самостоятельно обратиться к общедоступным сведениям. Кстати, последний пункт первой ссылки - Security Issues to Consider (Предупреждение о безопасности) SvDevНет абсолютно ничего странного в отсутствии прав на вызов любых функций через url. Наверное потому что это лишняя дырка на доступ к данным. И открывать ее нужно только в особых обстоятельтсвах. Главное в этой ветке: автор топика получил исчерпывающий ответ на свой конкретный вопрос, а так же узнал другие пути движения. А остальное - почему бы и не поговорить с умными людьми. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2012, 09:50 |
|
Проблема с показом изображений
|
|||
---|---|---|---|
#18+
emdidemdidТак и есть. В Sample Application изображения хранятся в собственной таблице, не в общей свалке. Действительно, я уже и забыл. Тем не менее мне кажется некоторые нюансы не поняты до конца, поэтому я поясню. 1. авторgrant execute on apex_040000.wwv_flow_epg_include_mod_local to anonymous; wwv_flow_epg_include_mod_local вызывается из wwv_flow_epg_include_modules.authorize, которая выполняется под правами собственника. У собственника уже есть права на свои процедуры. Даже если был drop procedure wwv_flow_epg_include_mod_local грант лишний. Соответственно, нужен только грант на вызываемые через url функции для anonymous, под которым ходит epg. Это логично и не добавляет уязвимостей, если только программист сам их не наделает в своих функциях. 2. Глава Security Issues to Consider относится ко всем методам. Если в приложении есть хоть одна страница, достаточно набрать p?n=file_id чтобы получить доступ ко всем файлам из wwv_flow_files. Если интересует безопасность, то знать о механизме вызова функций через url необходимо, и тогда никаких танцев с бубном нет. Хотя я лично конкретно wwv_flow_epg_include_mod_local не использую. 3. apex_util.get_blob_file_src не такая пушистая и не в полной мере документирована. Требует для себе item/Automated Row Fetch/Automatic Row Processing, слишком много для Downloading Blob from the Custom Table, как её использовать с WWV_FLOW_FILES вообще не понятно (использую p?n= ). Я уже не говорю про баги с кириллицей в названиях файлов для некоторых браузеров (FF/opera/...). Тут каждый метод имеет ряд недостатков, лично мой выбор для wwv_flow_files использовать p?n и apex_util.get_file. Для custom table (приоритетнее) wpg_docload в page process. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2012, 14:03 |
|
|
start [/forum/topic.php?fid=50&fpage=61&tid=1876155]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
91ms |
get tp. blocked users: |
2ms |
others: | 18ms |
total: | 196ms |
0 / 0 |