Oracle Apex Как сохранить изображение в таблице базы данных

#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. Да, отчет с формой означает, что вы получаете список сотрудников, а затем, когда вы нажимаете на одного из них, вы получаете новую страницу, где вы можете отредактировать сведения о выбранном сотруднике. Поэтому, когда вы загружаете туда изображение, если оно настроено правильно, оно попадет в таблицу сотруднику, которого вы редактировали. Теперь вы возвращаетесь к списку и выбираете другого сотрудника, редактируете их и повторяете.