Таблица file_managed
Таблица file_managed служит основным хранилищем метаданных для всех файлов, управляемых Drupal. Каждая запись в этой таблице представляет собой файл, загруженный через систему Drupal, и содержит такую информацию, как URI файла, размер, MIME-тип и статус его использования.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
fid |
serial |
Уникальный идентификатор файла (File ID). Первичный ключ таблицы. |
uuid |
char(128) |
Универсальный уникальный идентификатор файла. Используется для ссылки на файл в конфигурации и экспорте. |
langcode |
varchar(12) |
Код языка, связанного с этим файлом. Определяет, для какого языкового варианта контента предназначен файл. |
uid |
int |
Идентификатор пользователя (User ID), который загрузил файл. Внешний ключ для таблицы users.
|
filename |
varchar(255) |
Оригинальное имя файла в момент его загрузки на сервер. |
uri |
varchar(255) |
URI (Uniform Resource Identifier) файла в схеме Drupal. Указывает на местоположение файла относительно корня сайта (например, public://images/photo.jpg).
|
filemime |
varchar(255) |
MIME-тип файла (например, image/jpeg, application/pdf). Определяется при загрузке.
|
filesize |
int |
Размер файла в байтах. |
status |
int |
Статус файла: 0 - временный (temporary), 1 - постоянный (permanent). Временные файлы удаляются cron'ом.
|
created |
int |
Временная метка (Unix timestamp) создания записи о файле. |
changed |
int |
Временная метка (Unix timestamp) последнего изменения метаданных файла. |
Как это работает
Когда пользователь загружает файл через интерфейс Drupal (например, в поле типа "Файл" или "Изображение"), система сначала сохраняет файл в соответствующую файловую систему (public://, private://), а затем создает запись в таблице file_managed. Эта запись содержит всю необходимую метаинформацию, но не сами файловые данные.
Поле status играет ключевую роль в управлении жизненным циклом файла. Файлы, которые были загружены, но еще не прикреплены к какому-либо постоянному контенту (ноде, комментарию, пользователю), помечаются как временные (0). Периодическая задача Drupal Cron проверяет такие файлы и удаляет те из них, которые оставались временными дольше заданного интервала, освобождая место на диске.
Как только файл прикрепляется к постоянному контенту, его статус меняется на постоянный (1), что защищает его от удаления Cron'ом. Связь между файлом и контентом устанавливается через таблицу file_usage.
Система Drupal File API предоставляет функции для работы с этой таблицей, такие как file_save() для создания/обновления записей и file_load() для их загрузки по fid.
Пример SQL-запроса
Найти все постоянные изображения JPEG, загруженные конкретным пользователем:
SELECT fm.fid, fm.filename, fm.uri, fm.filesize, u.name as username
FROM file_managed fm
INNER JOIN users u ON fm.uid = u.uid
WHERE fm.status = 1
AND fm.filemime = 'image/jpeg'
AND fm.uid = 5;
Смотрите также
-
таблицу
file_usage,
которая отслеживает использование файлов -
таблицу
users,
которая хранит данные пользователей -
таблицу
node,
которая хранит материалы сайта -
таблицу
node_field_data,
которая хранит данные полей материалов