Таблица oc_upload
Таблица oc_upload служит для хранения записей о файлах, которые были загружены через стандартный файловый менеджер OpenCart. Эти файлы часто связаны с заказами, где покупателю необходимо предоставить дополнительные данные (например, индивидуальный дизайн для печати, документы и т.д.).
Поля
| Поле | Тип данных | Описание |
|---|---|---|
upload_id |
int |
Уникальный идентификатор (первичный ключ) для каждой загрузки. Автоматически инкрементируется. |
name |
varchar(255) |
Оригинальное имя файла, которое было у него на компьютере пользователя в момент загрузки. |
filename |
varchar(255) |
Уникальное имя файла, сгенерированное системой OpenCart для сохранения на сервере. Это имя гарантирует, что файлы не перезапишут друг друга. |
code |
varchar(255) |
Уникальный код (маска), который используется для формирования пути к файлу на сервере. Путь строится по принципу: {код[0]}/{код[1]}/filename. Это помогает избежать проблем с большим количеством файлов в одной директории.
|
date_added |
datetime |
Дата и время загрузки файла на сервер. |
Как это работает
Когда пользователь на странице оформления заказа или в личном кабинете загружает файл через элемент формы типа "file", скрипт OpenCart обрабатывает его.
Система генерирует уникальное имя для сохранения файла на диске (filename) и создает специальный код (code) для распределения файлов по подпапкам. Например, код a1b2c3d4 превратится в путь a/1/a1b2c3d4.
Информация о загруженном файле сохраняется в таблицу oc_upload. upload_id этой записи затем связывается с заказом. Это происходит через таблицу oc_order_option, где в поле value хранится именно этот ID, а не прямое имя файла.
Такой подход обеспечивает безопасность и абстракцию. Прямой путь к файлу нигде не фигурирует в заказе. Для отображения или скачивания файла система всегда обращается к таблице oc_upload по upload_id, получает из нее сгенерированное имя файла и код, а затем формирует конечный путь на сервере.
Пример SQL-запроса
Выбрать все файлы, загруженные за последнюю неделю:
SELECT *
FROM oc_upload
WHERE date_added >= DATE_SUB(NOW(), INTERVAL 7 DAY)
ORDER BY date_added DESC;
Найти все заказы, в которых был загружен конкретный файл:
SELECT o.order_id, oo.order_option_id, u.name as original_filename
FROM oc_upload u
JOIN oc_order_option oo ON (oo.value = u.upload_id)
JOIN oc_order o ON (oo.order_id = o.order_id)
WHERE u.upload_id = 123;
Смотрите также
-
таблицу
oc_order_option,
которая связывает загруженные файлы с опциями в заказе -
таблицу
oc_order,
которая хранит основную информацию о заказах -
таблицу
oc_option,
в которой настраиваются опции товара, включая тип "Файл"