Вложение файлов и изображений в записи базы данных
Функция вложения в Access позволяет добавлять в записи базы данных один или несколько файлов — документы, презентации, изображения и так далее. В этой статье приводится фоновая информация и действия, необходимые для настройки базы данных для использования вложений, а также вложения данных и управления ими.
Примечание: Функции, описанные в этой статье, не относятся к веб-приложениям Access.
В этой статье
- Применение вложений
- Добавление поля вложения в таблицу
- Непосредственное вложение файлов в таблицы
- Использование вложений с формами и отчетами
- Сохранение вложенных файлов в другом месте
- Удаление вложенных файлов
- Использование вложений без применения мыши или другого указывающего устройства
- Справочные сведения о вложениях
Применение вложений
Вложения можно использовать для хранения нескольких файлов в одном поле, а также для хранения нескольких типов файлов в этом поле. Например, предположим, что у вас есть база данных рабочих контактов. Теперь к записи каждого контакта можно прикрепить одно или несколько резюме, а также фотографию каждого контакта.
Вложения также позволяют хранить данные более рационально. В более ранних версиях приложения Access для хранения изображений и документов использовалась технология OLE (Object Linking and Embedding — связывание и внедрение объектов). По умолчанию с помощью технологии OLE создавался растровый эквивалент изображения или документа. Такие растровые файлы могут быть слишком большими — иногда в 10 раз больше исходного файла. При просмотре изображения или документа из базы данных с помощью технологии OLE отображалось растровое изображение, а не исходный файл. При использовании вложений документы и другие файлы, не являющиеся изображениями, открываются в соответствующих программах, так что эти файлы можно находить и редактировать непосредственно в приложении Access.
Кроме того, технология OLE требует использования программ, называемых OLE-серверами. Например, если в базе данных Access хранятся JPEG-файлы изображений, на каждом компьютере, на котором запущена эта база данных, должна работать отдельная программа, зарегистрированная как OLE-сервер для изображений JPEG. Напротив, в Access вложенные файлы сохраняются в исходных форматах без каких-либо вспомогательных изображений, а для просмотра изображений из базы данных не требуется дополнительное программное обеспечение.
Вложения и правила разработки баз данных
По умолчанию каждое поле реляционной базы данных содержит только один фрагмент данных. Например, если поле адреса содержит несколько адресов, найти адреса будет трудно, если не невозможно. Поэтому на первый взгляд вложения нарушают правила проектирования базы данных, так как в поле можно вложите несколько файлов ( один фрагмент данных). Однако вложения не нарушают правила проектирования, так как при вложении файлов в запись приложение Access создает одну или несколько системных таблиц и использует их для нормализации данных. Просматривать эти таблицы и работать с ними нельзя.
Сведения о просмотре других системных таблиц см. в руководстве по области навигации. Дополнительные сведения о разработке баз данных см. в статье Основные сведения о создании баз данных.
Способы использования вложенных файлов
При работе с вложенными файлами необходимо соблюдать указанные ниже правила.
- Вкладывать файлы можно только в базы данных, созданные в Access и использующие формат файла ACCDB. Нельзя осуществлять обмен вложениями между базами данных Access (ACCDB) и базами в формате более ранней версии (MDB).
- Необходимо создать поле в таблице и задать для него тип данных «Вложение». Изменить тип данных после того, как для него задано значение «Вложение», невозможно.
- В одной записи возможно хранение нескольких файлов. Например, можно хранить изображения и файлы, созданные с помощью программ обработки текстов и электронных таблиц.
- Вложить можно данные объемом до двух гигабайт (наибольший размер базы данных Access). Размер отдельных файлов не может превышать 256 мегабайт.
- Для добавления и изменения вложений, а также для управления ими служит диалоговое окно Вложения. Это диалоговое окно можно открыть двойным щелчком из поля вложения в таблице. Если требуется управлять вложениями из формы или просматривать их из отчета, в форму или отчет следует добавить элемент управления вложения и связать этот элемент с нужным полем вложения в таблице.
- По умолчанию элемент управления вложением обрабатывает изображения и выводит значки программ, соответствующие типам других файлов. Предположим, что в запись вложены фотография, резюме и документ Visio. При переходе от одного вложения к другому элемент управления выводит изображение и отображает значки программ для документов Word и Visio.
- Если открыть диалоговое окно Вложения из таблицы или формы, файлы вложений можно добавлять, удалять, изменять или сохранять. Если открыть диалоговое окно Вложения из отчета, можно только сохранять вложенные файлы в другом месте.
- Файлы вложения будут сжаты приложением Access, если они не были сжаты изначально. Например, JPEG-файлы сжимаются графической программой, которая их создает, поэтому программа Access их не сжимает.
- Если программа, которая использовалась для создания вложенного файла, установлена на компьютере, вложенные файлы можно открывать и изменять с помощью этой программы.
- Вложенные файлы можно сохранить на жестком диске или в сети. Тогда после внесения изменений во вложения можно проверить полученный результат, а уже затем сохранить их в базе данных.
- Управлять вложениями можно программным путем.
В следующих разделах приведены инструкции по добавлению вложений и управлению ими.
Добавление поля вложения в таблицу
Чтобы использовать вложения Access, необходимо сначала добавить поле вложения хотя бы в одну из таблиц базы данных. Access добавить поле вложения в таблицу можно двумя способами. Это поле можно добавить в представлении таблицы или в конструкторе. В этом разделе объясняется, как использовать оба метода.
Добавление поля вложения в режиме таблицы
- В таблице, открытой в режиме таблицы, щелкните первый доступный пустой столбец. Заголовок такого столбца содержит надпись Щелкните для добавления.
- На вкладке Таблица в группе Тип данных и форматирование щелкните стрелку в раскрывающемся списке Тип данных и выберите Вложение. Полю будет назначен тип данных «Вложение» и в строку заголовков будет помещен значок. На приведенном ниже рисунке показано новое поле вложения. Следует обратить внимание на значок скрепки в строке заголовков поля. По умолчанию в строку заголовка поля вложения нельзя вводить текст.
- Сохраните изменения. Следует помнить, что невозможно изменить тип данных созданного поля, однако в случае ошибки это поле можно удалить.
Добавление поля вложения в режиме конструктора
- В области навигации щелкните правой кнопкой мыши таблицу, которую требуется изменить, и в контекстном меню выберите пункт Конструктор .
- В столбце Имя поля выберите пустую строку и введите имя поля вложения.
- В той же строке в столбце Тип данных выберите значение Вложение.
- Сохраните изменения. Следует помнить, что невозможно изменить тип данных созданного поля, однако в случае ошибки это поле можно удалить.
- Чтобы открыть таблицу для работы с ней, на вкладке Конструктор в группе Представления щелкните стрелку под кнопкой «Показать», затем выберите пункт Режим таблицы. ИЛИ Щелкните правой кнопкой мыши вкладку документа для данной таблицы и в контекстном меню выберите команду Режим таблицы. -или- В области навигации щелкните таблицу правой кнопкой мыши и выберите в контекстном меню команду Открыть.
- Перейдите к следующим шагам.
Непосредственное вложение файлов в таблицы
После того как в таблицу добавлено поле вложения, можно вкладывать файлы в записи этой таблицы, не создавая форму для ввода данных. Кроме того, можно просматривать вложения без помощи формы, однако помните, что для просмотра непосредственно из таблиц используются программы, в которых создавались эти файлы, или программы, поддерживающие файлы такого типа. Например, при открытии вложенного в таблицу документа Word запускается приложение Word, а просмотр документа выполняется в этом приложении, а не в Access. Если приложение Word не установлено на компьютере, появится диалоговое окно с предложением выбрать программу для просмотра файла.
Добавление вложения в таблицу
- В таблице, которая содержит поле вложения и открыта в режиме таблицы, дважды щелкните поле вложения. Откроется диалоговое окно Вложения. Оно показано на рисунке ниже.
- Нажмите кнопку Добавить. Откроется диалоговое окно Выберите файл.
- Чтобы перейти к файлам, которые требуется добавить к записи, воспользуйтесь списком Папка, выберите нужные файлы и нажмите кнопку Открыть. Можно выбрать несколько файлов любого поддерживаемого типа данных. Список поддерживаемых типов данных см. в разделе Справочные сведения о вложениях далее в этой статье.
- Чтобы добавить файлы в таблицу, в диалоговом окне Вложения нажмите кнопку ОК. Файлы будут добавлены в поле, а число, указывающее количество вложений, увеличится. На рисунке ниже показано поле с двумя вложенными изображениями.
- Если требуется добавить файлы в текущее поле или другие поля таблицы, повторите эти шаги.
Открытие вложенных файлов из таблицы
- В таблице, открытой в режиме таблицы, дважды щелкните ячейку в поле вложения.
- В диалоговом окне Вложения дважды щелкните файл, который требуется открыть. -или- Выберите файл и нажмите кнопку Открыть. Файл будет открыт в связанной с ним программе — файлы Excel открываются в программе Excel и т. д. Некоторые файлы изображений можно открывать с помощью средства просмотра рисунков Windows. Если требуется не только просмотреть изображение, можно щелкнуть его правой кнопкой мыши и выбрать команду Изменить. При этом запустится программа, с помощью которой был создан данный файл, если она установлена на компьютере.
Сохранение изменений во вложенном файле
- Если файл требуется изменить, воспользуйтесь программой, с помощью которой этот файл был создан.
- Сохраните внесенные в файл изменения и завершите работу программы. Помните, что при изменении вложенного файла все изменения сохраняются на жестком диске в папке временных файлов Интернета. Дополнительные сведения об этой папке см. в конце данного раздела.
- Чтобы окончательно сохранить изменения, вернитесь в Access и в диалоговом окне Вложения нажмите кнопку ОК. Появится сообщение, подобное указанному ниже.
- Чтобы сохранить изменения, нажмите кнопку Да.
- Когда вложенный файл открывается в исходной программе для просмотра или редактирования, приложение Access помещает временную копию файла во временную папку. При изменении файла и сохранении изменений в исходной программе приложение Access сохраняет изменения в этой временной копии. При возврате в Access и нажатии кнопки ОК с целью закрыть диалоговое окно Вложения будет предложено снова сохранить вложенный файл. Нажмите кнопку Да, чтобы записать измененный файл в базу данных, или кнопку Нет, чтобы оставить файл в базе данных без изменений.
- Чтобы найти расположение временной папки, выполните указанные ниже действия.
- Запустите Windows Internet Explorer.
- В меню Сервис выберите команду Свойства браузера.
- На вкладке Общие нажмите кнопку Параметры. Откроется диалоговое окно Параметры. Путь к папке будет указан в разделе с папкой временных файлов Интернета.
Использование вложений с формами и отчетами
Если необходимо использовать вложения с формой или отчетом, воспользуйтесь элементом управления вложения. При переходе от одной записи в базе данных к другой этот элемент управления автоматически отображает файлы изображений. Если вложены файлы другого типа, например документы или диаграммы, элемент управления вложения показывает значок, соответствующий типу файла. Например, если вложен файл презентации, появится значок PowerPoint и т. д. Этот элемент управления позволяет увидеть, какие файлы вложены, и открыть диалоговое окно Вложения. Если это диалоговое окно открыто из формы, вложения можно добавлять, удалять, изменять и сохранять. Если оно открыто из отчета, можно только сохранять вложения на жестком диске или в сети, поскольку отчеты предназначены только для чтения.
В следующих разделах приведены инструкции по добавлению рамки рисунка в форму или отчет, перемещению между записями, вложению файлов и просмотру вложений. Помните, что перемещение между вложениями возможно только в том случае, если в записи содержится несколько вложений.
Добавление элемента управления вложения в форму или отчет
В этом разделе описано, как добавить элемент управления вложения в форму или отчет и привязать его к полю «Вложение» в соответствующей таблице. Процедура добавления элемента управления вложения одинакова для формы и отчета. Прежде всего следует убедиться, что по крайней мере в одной таблице базы данных имеется поле вложения. Дополнительные сведения о добавлении поля вложения см. в разделе Добавление поля вложения в таблицувыше.
Разработка формы или отчета может быть сложным процессом, поэтому в данном разделе предполагается, что база данных с хотя бы одной таблицей и одной формой или отчетом уже имеется. Сведения о создании таблиц, форм и отчетов см. в следующих статьях:
- Создание таблиц в базе данных
- Создание формы с помощью инструмента «Форма»
- Создание простого отчета
Добавление элемента управления вложения
- В области переходов щелкните правой кнопкой мыши форму или отчет, которые требуется изменить, и выберите в контекстном меню команду Конструктор.
- На вкладке Конструктор в группе Сервис выберите пункт Добавить существующие поля. Появится область Список полей, в которой перечислены поля таблицы, являющиеся источником данных для формы или отчета. Поле вложения в списке отмечено значком развертывания (можно щелкнуть рядом с этим полем знак «плюс» или «минус»). На приведенном ниже рисунке показано, как выглядит поле вложения в области Список полей
- Перетащите поле вложения целиком — родительские и дочерние элементы — из списка в нужное место формы. Элемент управления вложением будет помещен в форму и привязан к полю таблицы.
- При необходимости щелкните правой кнопкой мыши элемент управления и выберите команду Свойства, чтобы вывести на экран окно свойств для элемента управления. Задайте или измените свойства элемента управления в соответствии с остальной частью формы или отчета.
- Сохраните изменения и, чтобы открыть для просмотра соответственно форму или отчет, щелкните правой кнопкой мыши вкладку документа и выберите команду Режим формы или Режим отчета. Для поля, содержащего файлы изображений, элемент управления показывает изображения из этих файлов. Для поля, содержащего файл другого типа, например документ Word или презентацию PowerPoint, элемент управления отображает значок, соответствующий типу файла.
Управление вложениями с помощью формы
После того как элемент управления вложения добавлен в форму, файлы вложения можно добавлять, изменять, удалять и сохранять прямо из этой формы. Если запись содержит несколько вложений, можно переходить от одного файла вложения к другому с помощью прокрутки (при работе с таблицей такая возможность отсутствует).
Примечание: Создавший форму пользователь может предназначить ее только для чтения. В этом случае диалоговое окно Вложения можно будет использовать только для сохранения вложенных файлов на жестком диске или в сети.
Вложение файла
- Откройте форму, в которой отображаются вложения, и найдите запись, в которую требуется вложить файл.
- Выберите элемент управления вложением — элемент управления, привязанный к полю «Вложение». Откроется мини-панель инструментов:
Примечание: Если элемент управления вложением добавлен в раздел таблицы разделенной формы, мини-панель инструментов не откроется. Дополнительные сведения о разделенных формах см. в статье Создание разделенной формы.
Перемещение по вложенным файлам с помощью прокрутки
Примечание: Действия, описанные в данном разделе, применимы к формам и отчетам.
- Откройте форму или отчет, где отображаются вложения.
- Перейдите к записи, содержащей вложенные файлы.
- Щелкните элемент управления «Изображение», отображающий вложенные файлы. Откроется мини-панель инструментов.
- Для прокрутки вложенных файлов щелкайте стрелку Назад (влево) или Вперед (вправо). Чтобы увидеть имена файлов, нажмите кнопку Просмотреть вложения, с помощью которой открывается диалоговое окно Вложения. Имена вложенных файлов будут показаны в списке Вложения .
Сохранение вложенных файлов в другом месте
Действия, описанные в данном разделе, применимы к таблицам, формам и отчетам. Любой из файлов или все файлы, вложенные в данную запись, можно сохранить на жестком диске или в сети. Следует помнить, что при выборе сохранения всех файлов невозможно сохранить отдельные файлы — можно лишь сохранить их все. Для выборочного сохранения файлов следует сохранять их по одному.
- Откройте сначала таблицу, форму или отчет, где содержатся вложения, а затем — диалоговое окно Вложения.
Открытие диалогового окна Вложения из таблицы
- Откройте таблицу в режиме таблицы и дважды щелкните поле, где содержится вложение, которое требуется сохранить.
Открытие диалогового окна Вложения из формы или отчета
- Откройте форму или отчет, где отображаются вложения.
- Перейдите к записи, содержащей вложенные файлы.
- Щелкните элемент управления «Изображение», отображающий вложенные файлы. Откроется мини-панель инструментов.
- Нажмите кнопку Просмотреть вложения.
Сохранение отдельного вложения
- В диалоговом окне Вложения нажмите кнопку Сохранить как. Откроется диалоговое окно Сохранение вложения.
- Воспользуйтесь списком Папки, чтобы перейти к новому расположению файла, и нажмите кнопку Сохранить.
Сохранение всех вложений
- В диалоговом окне Вложения нажмите кнопку Сохранить все. Откроется диалоговое окно Сохранение вложений.
- Воспользуйтесь списком Папки, чтобы перейти к новому расположению файлов, и нажмите кнопку Сохранить.
Удаление вложенных файлов
Действия, описанные в данном разделе, применимы к таблицам и формам.
Удаление вложения
- Дважды щелкните поле вложения в таблице, чтобы открыть диалоговое окно Вложения. -или- В форме (в режиме просмотра макета или в режиме формы) перейдите к записи, которая содержит подлежащее удалению вложение, и на мини-панели инструментов нажмите кнопку Просмотреть вложения, чтобы открыть диалоговое окно.
- В диалоговом окне Вложения выберите файл, который требуется удалить, и нажмите кнопку Удалить.
Использование вложений без применения мыши или другого указывающего устройства
В следующем разделе описано, как использовать клавиатуру для установки фокуса в области навигации и открытия таблицы, формы или отчета, где содержатся вложенные файлы. Кроме того, здесь приведены пошаговые инструкции по просмотру вложенных файлов и открытию диалогового окна Вложения.
Открытие таблицы, формы или отчета из области навигации
- Нажмите клавишу F11.
Примечание: Если область навигации закрыта, при нажатии клавиши F11 она откроется, и фокус будет установлен в этой области. Если область навигации открыта, при нажатии клавиши F11 она закроется. Чтобы открыть область навигации и переместить на нее фокус, необходимо снова нажать клавишу F11.
Просмотр вложений из таблиц
- Для перемещения курсора в нужное поле вложения можно использовать клавиши со стрелками.
- Нажмите клавишу ПРОБЕЛ. Откроется диалоговое окно Вложения.
- Для перехода между кнопками в диалоговом окне или от кнопок к списку вложенных файлов Вложения воспользуйтесь клавишей TAB.
Примечание: Записи могут содержать несколько вложений. Если требуется выбрать вложение в списке из нескольких файлов, перейдите к списку файлов при помощи клавиши TAB, а затем выберите нужный файл при помощи клавиш со стрелками. После этого, нажимая клавишу TAB, вернитесь к кнопкам и выберите нужное действие.
Перемещение между вложениями с помощью прокрутки из формы или отчета
Эти действия возможны, только если у вас есть клавиатура Microsoft Natural, и запись содержит несколько вложений.
- При необходимости переместите фокус на элемент управления вложения с помощью клавиши TAB. По умолчанию приложение Access выделяет этот элемент управления и связанную с ним надпись, если она существует.
- Нажмите клавишу приложения. Откроется контекстное меню.
- Выберите Вперед или Назад с помощью клавиши TAB или клавиш со стрелками, а затем нажмите клавишу ВВОД.
- При необходимости повторите шаг 2, чтобы перейти к следующему вложенному файлу.
Открытие диалогового окна «Вложения» из формы или отчета
Эти действия возможны только при наличии клавиатуры Microsoft Natural.
- При необходимости переместите фокус на элемент управления вложения с помощью клавиши TAB. По умолчанию приложение Access выделяет этот элемент управления и связанную с ним надпись, если она существует.
- Нажмите клавишу приложения. Откроется контекстное меню.
- Выберите пункт Просмотреть вложения с помощью клавиши TAB или клавиш со стрелками, а затем нажмите клавишу ВВОД. Откроется диалоговое окно Вложения.
- Нажимайте клавишу TAB для перехода между кнопками в диалоговом окне или от кнопок к списку вложенных файлов Вложения (изменение — двойной щелчок). Записи могут содержать несколько вложений. Если требуется выбрать вложение в списке из нескольких файлов, перейдите к списку файлов при помощи клавиши TAB, а затем выберите нужный файл при помощи клавиш со стрелками. После этого, нажимая клавишу TAB, вернитесь к кнопкам и выберите нужное действие.
- Выбрав нужные файл и кнопку, нажмите клавишу ВВОД.
- По завершении выберите кнопку ОК с помощью клавиши TAB или клавиш со стрелками, а затем нажмите клавишу ВВОД.
Справочные сведения о вложениях
Ниже представлены справочные сведения о вложениях, в том числе поддерживаемые форматы файлов изображений и документов, соглашения об именах файлов и некоторые данные о вложении файлов в записи путем программирования.
Поддерживаемые форматы файлов изображений
В Access непосредственно поддерживаются (т. е. отображаются с помощью элемента управления вложением без использования дополнительного программного обеспечения) следующие форматы графических файлов:
BMP (точечный рисунок Windows)
ICON, ICO (значок)
WMF (метафайл Windows)
EMF (расширенный метафайл)
Поддерживаемые форматы документов и других файлов
Как правило, в качестве вложений можно использовать файлы, созданные в любых программах Microsoft Office. Кроме того, можно вкладывать файлы журнала (LOG), текстовые файлы (TEXT, TXT) и сжатые ZIP-файлы.
Соглашения об именах файлов
Имена вложенных файлов могут содержать любые знаки Юникода, поддерживаемые файловой системой NTFS, которая используется в Microsoft Windows NT (NTFS). Кроме того, имена файлов должны соответствовать следующим правилам.
- Длина имен не должна превышать 255 знаков, включая расширение имени файла.
- Имена не должны содержать следующих знаков: вопросительного знака (?), кавычек («), левой или правой косой черты (/ \), угловых скобок (< >), звездочки (*), вертикальной черты (|), двоеточия (:), знака абзаца (¶).
Типы файлов, сжимаемых в приложении Access
При вложении в базу данных файла любого из следующих типов приложение Access сжимает его, если он изначально не был сжат.
Расширение файла
Как хранить фото для товара в БД?
Пишу интернет-магазин MVC Rest api с использованием Spring Boot , Hibernate , PostgreSQL . Мне необходимо иметь для товаров фотографии. Соответственно, отсюда вопрос как вообще это реализовать? Вариант с хранением картинок прямо в БД не подойдет, поэтому я решил хранить в БД ссылки на фото, которые у меня хранятся на жестком диске. Но как все это реализовать в коде? В Entity получается у меня поле с типом String ? Java:
private String image;
alter table drink add column image varchar;
А в БД столбец с ссылками (путь) к фото? В таком случае как вывести изображение на стороне клиента, ведь мне будет выдаваться не фото, а ссылка? Получается нужно писать некий метод, который будет до вывода находить файл по ссылке и выводить его? Но как?
Как хранить изображения в MySQL с помощью BLOB

BLOB (или Binary Large Object, большой двоичный объект) – это тип данных MySQL, который позволяет хранить двоичные данные: изображения, мультимедиа и файлы PDF.
Хранить изображения (такие как фотографии и подписи) в базе данных MySQL вместе с другой информацией удобно в том случае, если вы разрабатываете приложения с сильной привязкой к БД (например, портал поиска работы, база данных студентов или финансовое приложение), и в этой БД изображения должны быть синхронизированы с другими данными.
И тогда на помощь приходит тип данных BLOB. Этот подход устраняет необходимость в создании отдельной файловой системы для хранения изображений, а также централизует базу данных, делая ее более портативной и надежной, поскольку данные изолированы от файловой системы. А еще это упрощает создание резервных копий, поскольку вы можете создать один дамп MySQL, содержащий все ваши данные.
Извлечение данных обрабатывается быстрее, а при создании новых записей вы можете быть уверены, что правила проверки данных и ссылочная целостность четко соблюдены (особенно при использовании транзакций MySQL).
В этом мануале мы расскажем о том, как использовать тип данных BLOB для хранения изображений с помощью PHP.
Требования
- Сервер Ubuntu 18.04, предварительно настроенный согласно этим инструкциям.
- Стек LAMP, установленный на вашем сервере. С установкой вам поможет этот мануал (раздел о виртуальных хостах можно пропустить, здесь мы не будем их использовать).
1: Создание базы данных
Давайте начнем с создания тестовой базы данных для этого проекта. Подключитесь к серверу по SSH, а затем выполните следующую команду, чтобы войти на сервер MySQL как пользователь root:
sudo mysql -u root -p
Введите root-пароль базы данных MySQL и нажмите Enter, чтобы продолжить.
После этого выполните следующую команду, чтобы создать базу данных. В этом руководстве мы назовем ее test_company:
CREATE DATABASE test_company;
После создания БД вы увидите следующее:
Query OK, 1 row affected (0.01 sec)
Теперь нам нужно создать на сервере MySQL учетную запись test_user; не забудьте заменить PASSWORD сложным паролем:
CREATE USER ‘test_user’@’localhost’ IDENTIFIED BY ‘PASSWORD’;
Вы получите следующий результат:
Query OK, 0 rows affected (0.01 sec)
Чтобы предоставить пользователю test_user полные права доступа к базе данных test_company, запустите команду:
GRANT ALL PRIVILEGES ON test_company.* TO ‘test_user’@’localhost’;
Вы должны получить следующий результат:
Query OK, 0 rows affected (0.01 sec)
В завершение нужно сбросить таблицы привилегий, чтобы MySQL перезагрузил права:
На экране должно появиться:
Query OK, 0 rows affected (0.01 sec)
Теперь, когда база данных test_company и пользователь test_user готовы, мы можем перейти к созданию таблицы. Предположим, нам нужна таблица products для хранения списка товаров. Позже мы попробуем вставить и извлечь данные из этой таблицы, чтобы понять, как работает BLOB в MySQL.
Выйдите из оболочки MySQL:
Затем снова войдите в систему, на этот раз – как пользователь test_user:
mysql -u test_user -p
При появлении запроса введите пароль test_user и нажмите Enter, чтобы продолжить. Затем откройте базу данных test_company, набрав команду:
Перейдя в базу данных test_company, MySQL отобразит такой результат:
Затем создайте таблицу products:
CREATE TABLE `products` (product_id BIGINT PRIMARY KEY AUTO_INCREMENT, product_name VARCHAR(50), price DOUBLE, product_image BLOB) ENGINE = InnoDB;
Эта команда создаст таблицу по имени products. В таблице будет четыре столбца:
- product_id: в этом столбце используется тип данных BIGINT, он позволяет вместить большой список продуктов, содержащий 2⁶³-1 элементов. Мы пометили столбец как PRIMARY KEY, чтобы присвоить товарам уникальные идентификаторы. Чтобы MySQL мог обрабатывать создание новых идентификаторов, мы использовали ключевое слово AUTO_INCREMENT.
- product_name: этот столбец содержит названия товаров. Здесь мы использовали тип данных VARCHAR, так как это поле обычно обрабатывает буквенно-цифровые значения длиной до 50 символов; ограничение в 50 символов – это всего лишь гипотетическое значение, используемое для целей этого руководства.
- price: этот столбец содержит розничные цены наших товаров. Поскольку цена на некоторые товары может выражаться числом с плавающей точкой (например, 23.69, 45.36, 102.99), мы указали здесь тип данных DOUBLE.
- product_image: в этом столбце мы указали тип данных BLOB, поскольку он предназначен для хранения двоичных данных – изображений товаров.
Для поддержки широкого спектра функций, включая транзакции MySQL, мы использовали механизм InnoDB. Выполнив вышеприведенную команду для создания таблицы, вы увидите следующий результат:
Query OK, 0 rows affected (0.03 sec)
Выйдите из сервера MySQL:
Вы получите сообщение:
Таблица products готова. Вы можете использовать ее для хранения некоторых записей, включая изображения продуктов. Скоро мы заполним ее данными.
2: Создание PHP-скрипта для заполнения базы данных
На этом этапе мы создадим сценарий PHP, который будет подключаться к базе данных MySQL, созданной в первом разделе руководства. Сценарий подготовит три записи о товарах и вставит их в таблицу products.
Чтобы создать PHP-скрипт, откройте новый файл в текстовом редакторе:
sudo nano /var/www/html/config.php
Затем вставьте в него следующую информацию (замените PASSWORD паролем test_user, который вы создали в разделе 1):
$pdo = new PDO(«mysql:host=» . DB_HOST . «; dbname https://i.imgur.com/VEIKbp0.png»)
‘product_name’ => ‘MANAGED KUBERNETES’,
‘product_name’ => ‘MySQL DATABASES’,
$sql = «INSERT INTO products(product_name, price, product_image) VALUES (:product_name, :price, :product_image)»;
foreach ($products as $product)
echo «Records inserted successfully»;
Сохраните и закройте файл.
Этот файл нужен для определения переменных базы данных и подключения к ней. Файл также инициирует объект PDO и сохраняет его в переменной $pdo. Мы ссылаемся на файл config.php вверху.
Затем мы создали массив данных о товарах, которые нужно вставить в БД. Помимо product_name и price, которые заданы в виде строк и числовых значений соответственно, сценарий использует встроенную функцию PHP file_get_contents для чтения изображений из внешнего источника и передачи их в виде строк в столбец product_image.
После этого мы подготовили оператор SQL и использовали оператор PHP foreach для вставки каждого продукта в базу данных.
Запустите /var/www/html/insert_products.php в окне браузера, используя следующий URL-адрес (не забудьте заменить your-server-IP внешним IP-адресом сервера):
На экране вы увидите сообщение об успешном выполнении файла – следовательно, записи были вставлены в базу данных.
Records inserted successfully
Итак, мы успешно вставили три записи, содержащие изображения товаров, в таблицу. На следующем этапе мы напишем сценарий PHP для извлечения этих записей и отображения их в браузере.
3: Извлечение и визуализация данных из БД MySQL
Имея в базе данных информацию и изображения товаров, вы можете написать второй сценарий PHP, который будет запрашивать и отображать данные в таблице HTML в браузере.
Чтобы создать файл, введите:
sudo nano /var/www/html/display_products.php
Затем вставьте в файл следующее:
$sql = «SELECT * FROM products»;
Как я могу хранить и извлекать изображения из базы данных MySQL с помощью PHP
Как я могу вставить изображение в MySQL, а затем получить его с помощью PHP?
У меня мало опыта в этой области и я хотел бы использовать небольшой код, чтобы начать разбираться в этом.
Ответ 1
Сначала вам необходимо создать таблицу MySQL для хранения изображений, например:
create table testblob (
image_id tinyint(3) not null default ‘0’,
image_type varchar(25) not null default »,
image blob not null,
image_size varchar(25) not null default »,
image_ctgy varchar(25) not null default »,
image_name varchar(50) not null default »
);
Затем вы можете поместить изображение в базу данных, например, так:
/***
* Все приведенные ниже команды MySQL_ могут быть легко.
* переведены на MySQLi_ с дополнениями, как прокомментировано
***/
$imgData = file_get_contents($filename);
$size = getimagesize($filename);
mysql_connect(«localhost», «$username», «$password»);
mysql_select_db («$dbname»);
// mysqli
// $link = mysqli_connect(«localhost», $username, $password,$dbname);
$sql = sprintf(«INSERT INTO testblob
(image_type, image, image_size, image_name)
VALUES
(‘%s’, ‘%s’, ‘%d’, ‘%s’)»,
/***
* Для всех функций mysqli_, приведенных ниже, синтаксис следующий:
* mysqli_whartever($link, $functionContents);
***/
mysql_real_escape_string($size[‘mime’]),
mysql_real_escape_string($imgData),
$size[3],
mysql_real_escape_string($_FILES[‘userfile’][‘name’])
);
mysql_query($sql);
Вы можете отобразить изображение из базы данных на веб-странице с помощью:
$link = mysql_connect(«localhost», «username», «password»);
mysql_select_db(«testblob»);
$sql = «SELECT image FROM testblob WHERE image_id=0»;
$result = mysql_query(«$sql»);
header(«Content-type: image/jpeg»);
echo mysql_result($result, 0);
mysql_close($link);
Ответ 2
Имейте в виду, что передача изображений из БД обычно намного, намного медленнее, чем с диска. Вам придется запустить процесс PHP, открыть соединение с БД, заставить БД читать данные изображения с того же диска и оперативной памяти для кэша, как из файловой системы, передавать их через несколько сокетов и буферов, а затем отправлять через PHP, который по умолчанию делает их некэшируемыми и добавляет накладные расходы на кодирование chunked HTTP.
В то же время современные веб-серверы могут обслуживать изображения с помощью всего нескольких оптимизированных вызовов ядра (файл, отображенный в память, и в дальнейшем передавая его TCP-стеку), так что они даже не копируют память, и накладных расходов почти нет. Это разница между возможностью обслуживать 20 или 2000 изображений параллельно на одной машине.
Так что не делайте этого, если только вам не нужна транзакционная целостность (а на самом деле даже это можно сделать с помощью метаданных изображения в БД и процедур очистки файловой системы) и вы не знаете, как улучшить работу PHP с HTTP, чтобы она подходила для изображений.
Ответ 3
- Если база данных повреждена, нет возможности извлечь изображение.
- Извлечение файлов изображений из базы данных происходит медленно по сравнению с другими вариантами.
- Легко извлекать изображения.
- Если хранится более одного изображения, мы можем легко получить информацию о нем.
Ответ 4
Лично я не стал бы хранить изображение в базе данных, а поместил бы его в папку, недоступную извне, и использовал бы базу данных для отслеживания его местоположения. Это уменьшает размер базы данных, и вы можете просто включить ее с помощью PHP. Тогда без PHP не будет возможности получить доступ к изображению.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.