#blob #oracle-apex
#большой двоичный объект #oracle-apex
Вопрос:
В apex мне нужно сохранить изображения товарищей по команде в таблице, которая позже будет использоваться в приложении для почтовых форматов html. У меня есть таблица employee со столбцами empployee_name и employee_photo. Каков наилучший способ передачи данных в столбец employee_photo, который является blob?
Могу ли я использовать статические файлы для того же, загрузив туда изображения? И если да, то как я могу ссылаться на них в своем столбце?
Я искал в Google, но большинство методов / объяснений были слишком сложными для такого новичка, как я.
Ответ №1:
Это забавная вещь, которую действительно следует сделать немного проще.
По памяти метод, который я использую, выглядит примерно так:
Установите элемент страницы в статические файлы приложения (один из пресетов), затем после этого запустите некоторый код PLSQL, который берет большой двоичный объект из статических файлов приложения, где id = :P1_ITEM , затем вставьте его в фактическую таблицу, где вы этого хотите.
В случае, если вы еще не настроили его таким образом, вы, вероятно, захотите, чтобы таблица сотрудников была отчетом с формой, чтобы вы могли щелкнуть по сотруднику и получить красивую большую форму, в которую вы можете ввести данные, а также настроить элемент страницы, с помощью которого вы будете добавлять картина.
Я надеюсь, что вы сможете найти свой путь с этим, если вы попытаетесь, и мои инструкции будут недостаточно хороши, дайте мне знать, и я свяжусь с вами, когда смогу добраться до своего сервера APEX.
РЕДАКТИРОВАТЬ: Более подробные инструкции:
Для того, чтобы загрузить изображение одного человека, вам, вероятно, понадобится отчет со страницей формы (или, скорее, страниц), их можно легко создать с помощью мастера, поэтому я не буду вдаваться в их объяснения.
Затем на странице формы вам понадобится элемент страницы типа «Просмотр файла», давайте назовем его P1_FILE_BROWSE для этого примера. Мы установим для этого элемента тип хранилища «Таблица APEX_APPLICATION_TEMP_FILES». Теперь это означает, что когда вы загружаете что-то в этот элемент и отправляете страницу, оно будет сохранено в этой таблице под идентификатором, который хранится в P1_FILE_BROWSE .
Итак, теперь мы создадим процесс для отправки после отправки, который будет выглядеть примерно так:
DECLARE
a_filename VARCHAR2(400);
a_mime_type VARCHAR2(255);
a_blob_content BLOB;
BEGIN
select FILENAME, MIME_TYPE, BLOB_CONTENT
into a_filename, a_mime_type, a_blob_content
from apex_application_temp_files
where name = :P1_FILE_BROWSE;
UPDATE EMPLOYEES
SET filename = a_filename,
mime_type = a_mime_type,
blob_content = a_blob_content
WHERE id_user = :P1_ID_USER
END;
Если мы пройдем через это с самого начала, сначала мы объявим три переменные изображения, его имя, его mime-тип (этот процесс одинаков для документов word или видео или чего-то еще, mime-тип сообщает нам, что это за файл) и его содержимое blob, которое является фактическим изображением.
Затем мы заполняем эти переменные из APEX_APPLICATION_TEMP_FILES, где изображение было впервые сохранено, а затем помещаем эти переменные в нашу таблицу сотрудников.
Как и во всех APEX, возможно гораздо больше, и есть несколько способов сделать это, просто я привык к этому. Так что поиграйте с этим, чтобы заставить его работать, удачи.
Комментарии:
1. Извините, я не понимаю, когда вы говорите: установите элемент страницы в статические файлы приложения. Как мне это сделать? Я очень новичок в apex и не очень хорошо разбираюсь в pl / sql. Так что мне нужна дополнительная помощь
2. @PPPP Я понимаю, что ж, я бы посоветовал вам постараться изо всех сил. И я напишу что-нибудь примерно через 4 часа с некоторыми более подробными инструкциями о том, как именно это сделать.
3. @PPPP привет, я вспомнил, что как-то забыл пинговать тебя с обновлением. Но да, вчера я написал еще кое-что, как и обещал
4. Вы упомянули, чтобы поместить изображение одного человека: так что, по сути, одно за другим можно загружать несколько изображений? Если мне нужно загрузить для нескольких сотрудников?
5. Да, отчет с формой означает, что вы получаете список сотрудников, а затем, когда вы нажимаете на одного из них, вы получаете новую страницу, где вы можете отредактировать сведения о выбранном сотруднике. Поэтому, когда вы загружаете туда изображение, если оно настроено правильно, оно попадет в таблицу сотруднику, которого вы редактировали. Теперь вы возвращаетесь к списку и выбираете другого сотрудника, редактируете их и повторяете.