Загрузка файла через форму на PHP

Программирование Веб программирование Загрузка файла через форму на PHP

Помечено: ,

В этой теме 0 ответов, 1 участник, последнее обновление  Васильев Владимир Сергеевич 1 неделя, 3 дн. назад.

  • Автор
    Сообщения
  • #5466
    @admin

    Весь процесс загрузки файла на сервер происходит следующим образом. Нарисованная нами форма отправляет файлик на сервер через POST. Сервер сохраняет файл во временном хранилище, запускает скрипт, который после некоторых манипуляций(например, различные проверки безопасности) копирует файл из временного хранилища в постоянное. На деле, реализовать это еще проще, чем рассказать. Поэтому сразу приступим, и начнем с создания формы.

    HTML форма для загрузки файла

    Первым делом построим самую простую форму с двумя полями: специальное поле для загрузки файла(input type=file), и кнопка «отправить». Методом отправки данных будет POST. Кроме того, необходимо указать способ кодирования данных при отправке, с помощью атрибута ecntype.

    <form enctype="multipart/form-data" method="post">
        Файл: <input type="file" name="file">
        <input type="submit" name="submintbut" value="Отправить">
    </form>

    Способ кодирования выставлен в multipart/form-data, это говорит о том, что данные кодироваться не будут, и будут отправлены в своем первоначальном виде. Такой способ используется только для загрузки файлов.

    Обработка формы загрузки файла на PHP

    После того, как сервер принял POST данные из формы, должен отработать скрипт по их обработке. Совершенно неважно, где скрипт будет написан, в моем примере его можно поместить в HTML документ с формой. Нам понадобится одна единственная функция move_uploaded_file, которая переместит файл из временного хранилища на сервере(первый аргумент) по адресу, указанному во втором аргументе, тем самым завершив загрузку.

    Информация о загруженных через POST файлах хранится в специальном суперглобальном ассоциативном массиве $_FILES. К конкретному файлу можно обратиться по имени формы, в нашем случае $_FILES[‘file’].

    Доступная информация о файле:

    • $_FILES[‘file’][‘name’] — имя файла при загрузке(на компьютере клиента);
    • $_FILES[‘file’][‘tmp_name’] — место временного хранения файла на сервере;
    • $_FILES[‘file’][‘size’] — размер в байтах;
    • $_FILES[‘file’][‘error’] — код ошибки, в случае неудачной загрузки;

    Вот коротенький скрипт, который переместит файл из временного хранилища в постоянное.

    if(isset($_FILES['file'])) {
        $fileName = $_FILES['file']['name'];
     
        echo 'Файл: ' . $fileName . '<br>';
     
        //Загрузка файла на сервер
        $uploadDir = '/files/'; //Директория на сервере, для загружаемых файлов
     
        if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadDir . $fileName)) {
            echo 'Файл успешно загружен на сервер.<br>';
        } else {
            echo 'Загрузка файла не удалась!<br>';
        }
    }

Для ответа в этой теме необходимо авторизоваться.