Encoderast
@Encoderast
frontend пытается что-то делать в backend

Как Добавление файлов по средствам php?

Валар моргулис!

Есть функция с помощью которой я добавляю изображение на сайт, там идет замена названия картинки на id товара, т.е. само название я опускаю (nameimage.jpg будет как 1.jpg) , а как быть с файлами (doc, excel ...)? - в смысле там могут быть любые файлы (5 штук возможных) тут у меня возникают вопросы с исполнением

Мне надо заносить название этого файла в БД и от туда потом доставать или можно также менять название файла на id?

Пример нынешнего добавления на сайт (изображения):

Жмяк
public function actionAdd()
    {
        // Проверка доступа
        self::checkAdmin();

        $months = array( 1 => 'января' , 'февраля' , 'марта' , 'апреля' , 'мая' , 'июня' , 'июля' , 'августа' , 'сентября' , 'октября' , 'ноября' , 'декабря' );

        // Обработка формы
        if (isset($_POST['submit'])) {
            // Если форма отправлена
            // Получаем данные из формы
            $options['title'] = $_POST['title'];
            $options['short_description'] = $_POST['short_description'];
            $options['description'] = $_POST['description'];
            $options['status'] = $_POST['status'];


            // Флаг ошибок в форме
            $errors = false;

            // При необходимости можно валидировать значения нужным образом
            if (!isset($options['title']) || empty($options['title'])) {
                $errors[] = 'Заполните поля';
            }

            if ($errors == false) {
                // Если ошибок нет
                // Добавляем новый сертификат
                $id = License::addLicense($options);

                // Если запись добавлена
                if ($id) {
                    // Проверим, загружалось ли через форму изображение
                    if (is_uploaded_file($_FILES["image"]["tmp_name"])) {
                        // Если загружалось, переместим его в нужную папке, дадим новое имя
                        move_uploaded_file($_FILES["image"]["tmp_name"], $_SERVER['DOCUMENT_ROOT'] . "/upload/images/license/{$id}.jpg");
                    }
                };

                // Перенаправляем пользователя на страницу управлениями сертефикатами
                header("Location: /admin/license/");
            }
        }

        // Подключаем вид
        require_once(ROOT . '/views/admin_license/add.php');
        return true;
    }

  • Вопрос задан
  • 163 просмотра
Пригласить эксперта
Ответы на вопрос 2
zoozag
@zoozag
Opencart
Вам просто нужно получить разрешение файла, а не все подряд записывать как jpg.
SplFileInfo::getExtension
Ответ написан
pezdatskiy
@pezdatskiy
Предприниматель, по выходным- программист
Подобную задачу я реализовывал так-
Сделал таблицу сопоставления для файлов
При сохранении переименовывал файл в мд5(старое имя +таймстамп).расширение , в базе сохранял старое и новое имя. Если нужно вернуть файл для скачивания- отправляю с оригинальным именем. В коде страницы использую прямой путь до файла. Там же в таблице можете соотнести с товарами отдельным полем.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы