Как загрузить файл на сервер с помощью PHP: простой пример с пояснениями

Категория:

Форма загрузки файлов — основа любого личного кабинета, фотогалереи или CMS.
В PHP реализовать загрузку файла на сервер просто. Главное — правильно настроить HTML-форму, обработать файл и сохранить его. Разберём процесс по шагам.

Шаг 1. HTML-форма для загрузки

Для загрузки файла форма должна иметь атрибут enctype="multipart/form-data" и использовать метод POST.

htmlКопироватьРедактировать<form action="upload.php" method="post" enctype="multipart/form-data">
    <label>Выберите файл:</label>
    <input type="file" name="myfile">
    <button type="submit">Загрузить</button>
</form>

Поле <input type="file"> позволяет пользователю выбрать файл на компьютере.

Шаг 2. Обработка файла на сервере (upload.php)

phpКопироватьРедактировать<?php
// Проверяем, был ли загружен файл
if (isset($_FILES['myfile']) && $_FILES['myfile']['error'] === UPLOAD_ERR_OK) {
    
    // Получаем данные о файле
    $fileTmpPath = $_FILES['myfile']['tmp_name'];
    $fileName = $_FILES['myfile']['name'];
    $destination = 'uploads/' . $fileName;

    // Перемещаем файл из временной папки в нужную директорию
    if (move_uploaded_file($fileTmpPath, $destination)) {
        echo "Файл успешно загружен в: $destination";
    } else {
        echo "Ошибка при перемещении файла.";
    }

} else {
    echo "Файл не был загружен или произошла ошибка.";
}
?>

$_FILES['myfile'] — массив с информацией о загруженном файле.
move_uploaded_file() — безопасный способ сохранить файл на сервере.

Советы по безопасности

  • Проверяй тип файла: mime_content_type() или по расширению.
  • Генерируй уникальные имена: uniqid(), чтобы избежать перезаписи.
  • Не разрешай загрузку .php, .exe и других потенциально опасных файлов.
  • Ограничивай размер файла в php.ini: upload_max_filesize, post_max_size.

Пример генерации уникального имени

phpКопироватьРедактировать$ext = pathinfo($fileName, PATHINFO_EXTENSION);
$newName = uniqid('file_', true) . '.' . $ext;
$destination = 'uploads/' . $newName;

Заключение

Загрузка файлов в PHP — это всего три шага: форма, обработка и сохранение. Главное — правильно использовать $_FILES и move_uploaded_file(), а также не забывать про базовую защиту. Это фундамент для любой системы, где пользователи взаимодействуют с контентом.