Курс — «Программирование на PHP8 для начинающих» — #20 Работа с файлами и директориями. Загрузка файлов на сервер
Здравствуйте, дорогие друзья.
Загрузка файлов на сервер является важной функцией для многих веб-приложений. Это может включать загрузку изображений, документов, видео и других типов файлов. В этом разделе мы рассмотрим, как реализовать загрузку файлов на сервер с использованием PHP.
Создание HTML-формы для загрузки файлов
Для загрузки файлов на сервер необходимо создать HTML-форму с атрибутом enctype="multipart/form-data"
. Этот атрибут указывает браузеру, что форма будет отправлять файлы.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>File Upload Example</title> </head> <body> <form action="upload.php" method="post" enctype="multipart/form-data"> <label for="file">Choose a file:</label> <input type="file" id="file" name="file" required><br><br> <input type="submit" value="Upload"> </form> </body> </html> |
Обработка загрузки файлов на сервере
Для обработки загрузки файлов на сервере используется суперглобальный массив $_FILES
. Этот массив содержит информацию о загруженных файлах, такую как имя файла, временное имя файла, тип файла и размер файла.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<?php // upload.php if ($_SERVER["REQUEST_METHOD"] == "POST") { // Проверка наличия загруженного файла if (isset($_FILES['file']) && $_FILES['file']['error'] == UPLOAD_ERR_OK) { $uploadDir = "uploads/"; $uploadFile = $uploadDir . basename($_FILES['file']['name']); // Проверка типа файла $allowedTypes = ['image/jpeg', 'image/png', 'image/gif']; $fileType = mime_content_type($_FILES['file']['tmp_name']); if (!in_array($fileType, $allowedTypes)) { die("Invalid file type."); } // Перемещение загруженного файла if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadFile)) { echo "File is valid, and was successfully uploaded.\n"; } else { die("Failed to move uploaded file."); } } else { die("File upload failed."); } } ?> |
Валидация загруженных файлов
Валидация загруженных файлов является важным шагом для обеспечения безопасности и корректности данных. Валидация может включать проверку типа файла, размера файла и других параметров.
- Проверка типа файла:
1 2 3 4 5 6 7 |
<?php $allowedTypes = ['image/jpeg', 'image/png', 'image/gif']; $fileType = mime_content_type($_FILES['file']['tmp_name']); if (!in_array($fileType, $allowedTypes)) { die("Invalid file type."); } ?> |
2. Проверка размера файла:
1 2 3 4 5 6 |
<?php $maxFileSize = 2 * 1024 * 1024; // 2 MB if ($_FILES['file']['size'] > $maxFileSize) { die("File is too large."); } ?> |
3. Проверка расширения файла:
1 2 3 4 5 6 7 |
<?php $allowedExtensions = ['jpg', 'jpeg', 'png', 'gif']; $fileExtension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION); if (!in_array($fileExtension, $allowedExtensions)) { die("Invalid file extension."); } ?> |
Пример полного цикла загрузки файлов на сервер:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>File Upload Example</title> </head> <body> <form action="upload.php" method="post" enctype="multipart/form-data"> <label for="file">Choose a file:</label> <input type="file" id="file" name="file" required><br><br> <input type="submit" value="Upload"> </form> </body> </html> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
<?php // upload.php if ($_SERVER["REQUEST_METHOD"] == "POST") { // Проверка наличия загруженного файла if (isset($_FILES['file']) && $_FILES['file']['error'] == UPLOAD_ERR_OK) { $uploadDir = "uploads/"; $uploadFile = $uploadDir . basename($_FILES['file']['name']); // Проверка типа файла $allowedTypes = ['image/jpeg', 'image/png', 'image/gif']; $fileType = mime_content_type($_FILES['file']['tmp_name']); if (!in_array($fileType, $allowedTypes)) { die("Invalid file type."); } // Проверка размера файла $maxFileSize = 2 * 1024 * 1024; // 2 MB if ($_FILES['file']['size'] > $maxFileSize) { die("File is too large."); } // Проверка расширения файла $allowedExtensions = ['jpg', 'jpeg', 'png', 'gif']; $fileExtension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION); if (!in_array($fileExtension, $allowedExtensions)) { die("Invalid file extension."); } // Перемещение загруженного файла if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadFile)) { echo "File is valid, and was successfully uploaded.\n"; } else { die("Failed to move uploaded file."); } } else { die("File upload failed."); } } ?> |
Загрузка файлов на сервер является важной функцией для многих веб-приложений. PHP предоставляет мощные инструменты для обработки загрузки файлов, включая валидацию типа, размера и расширения файлов. Это позволяет создавать безопасные и надежные приложения для работы с файлами.
На этом все. Всем хорошего дня!
Цикл статей по курсу — «Программирование на PHP8 для начинающих».