Загрузите изображения с помощью php

У меня есть файл входного типа, который скрыт и запускается с помощью другой кнопки ... входные данные должны загружать изображения только в папку с именем Covers, но код не работает и не загружает никаких изображений ...
HTML-код

<div class = "cover">
    <img src = "Layout/images/cover.jpg" alt = "cover" name = "cover-img" class = "cover-img"> 
    <form action = "<?php echo $_SERVER['PHP_SELF']?>" method = "POST" enctype = "multipart/form-data">
        <button type = "submit" name = "submit-cover" id = "cover-btn">Change Cover</button>
    <input type = "file" name = "avatar" id = "cover-img-input" class = "hidden" />
</form>


php коды:

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (isset($_POST['submit-cover'])) {
        $avatarName = $_FILES['avatar']['name'];
        $avatarTempName = $_FILES['avatar']['tmp_name'];

        // List of allowed image extensions
        $avatarAllowedExtensions = array("jpeg","jpg","png","gif");

        // Get avatar extension
        $avatarExtension = strtolower(end(explode('.',$avatarName)));

        // Check if uploaded image extension is in allowed image extensions
        $formErrors=array();
        if (! empty($avatarName) && ! in_array($avatarExtension, $avatarAllowedExtensions)) {
            $formErrors[]='This extension is <strong>not allowed</strong>';
        }
        if (empty($avatarName)) {
            $formErrors[]='No image <strong>uploaded</strong>';                                         
        }

        if (empty($formErrors)) {
            // Create random number between zero to million to concatinate it with image name
            $avatar = rand(0,1000000) . '_' . $avatarName;

            // Move image into Covers folder
            move_uploaded_file($avatarTempName, "Uploads\Covers\\" . $avatar);

        }
    }
}

я получил

Fatal error: Undefined class constant 'MYSQL_ATTR_INIT_COMMAND' in D:\XAMPP\htdocs\Warina\connect.php on line 7

После этого я поискал решение и получил следующее: extension=php_pdo_mysql.dll должен быть раскомментирован в моем php.ini, и теперь он раскомментирован. Я тоже не понимаю, что это за ошибка.

Вы проверили свой журнал ошибок, есть ли какие-либо подсказки о том, что происходит? Хорошей идеей также является включение display_errors в вашей локальной среде PHP. Подробнее здесь: Как мне отобразить ошибки PHP?

Magnus Eriksson 31.08.2018 21:39

Вы уже добавляли код отображения ошибки, предложенный в комментарии @MagnusEriksson?

RiggsFolly 31.08.2018 21:54

@RiggsFolly да, я сделал то, что сказал Магнус Эрикссон, и у меня возникла фатальная ошибка: Неустранимая ошибка: неопределенная константа класса 'MYSQL_ATTR_INIT_COMMAND' в D: \ XAMPP \ htdocs \ Warina \ connect.php в строке 7 после этого я искал решение и получил это : extension = php_pdo_mysql.dll должен быть раскомментирован в моем php.ini, и теперь он раскомментирован. Я тоже запутался в этой ошибке .. вы можете дать мне решение

Raizada Dev 01.09.2018 11:13

Так что вам лучше показать нам connect.php и любой код, который пытается получить доступ к базе данных в этом скрипте.

RiggsFolly 01.09.2018 12:59

Также запустите небольшой скрипт с этим в скрипте. phpinfo(), найдите параметр Loaded Configuration File и убедитесь, что это именно тот файл php.ini, который вы просматривали.

RiggsFolly 01.09.2018 13:02
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
5
46
1

Ответы 1

Эта строка отправляет уведомление:

$avatarExtension = strtolower(end(explode('.',$avatarName)));

Notice: Only variables should be passed by reference in file.php on line xx

Заменить

$avatarExtension = explode('.',$avatarName);
$avatarExtension = strtolower(end($avatarExtension));

Исправьте этот путь:

move_uploaded_file($avatarTempName, "Uploads\Covers\\" . $avatar);

С

move_uploaded_file($avatarTempName, "Uploads\\Covers\\" . $avatar);

И убедитесь, что он существует

Путь существует, я уверен в этом, и я заменил свои строки на ваши, но проблема все еще существует, и изображение не загружено

Raizada Dev 31.08.2018 21:38

Вы используете * nix, где имена каталогов чувствительны к регистру, если это так, фактические имена каталогов содержат заглавную букву в начале

RiggsFolly 31.08.2018 21:53

Также проще использовать /, а не escape-символ `\`, независимо от ОС. PHP решит, что на самом деле использовать для внутренних целей в любой ОС.

RiggsFolly 31.08.2018 21:55

Другие вопросы по теме