От автора: у меня на компьютере творится полнейший бардак! Жена позабивала винт всякими «чемоданами без ручек», какими-то непонятными программами. Кроме этого накачала уйму книг по кулинарии, цветоводству и о том, как узнать о неверности мужа. Из-за последней категории литературы я и боюсь что-то удалять. Вот решил все ее дамские файловые «фичи» закинуть куда-нибудь в онлайн. Получается, что загрузка файлов на сервер PHP актуальна не только для вас, но и для меня :).
Зачем нам серверное пространство?
Не думаю, что такой вопрос может возникнуть у кого-то. Но всякое бывает! Скажу только, что различные решения для загрузки чего-либо на серверное пространство востребованы в сфере сайтостроения. Благо, за примерами бегать далеко не надо.
Все мы являемся пользователями той или иной социалки. Паутинки этих «липких» сетей окутали, затронули всех и каждого. Чтобы загрузить в свой профиль фотки с отдыха, с семейного торжества и другие доказательства успешной жизни, используется загрузка файлов на сервер через PHP.
Кроме этого подобный функционал реализован и на обычных сайтах с поддержкой комментариев. Пользователю предоставляется возможность украсить свой аккаунт аватаркой, выделяющей его среди остальной аудитории. В общем, по всей Сети на серверное пространство грузят все и каждый.
Проще не бывает!
Любое программное решение можно «обвешать» стольким количеством дополнительного функционала, что порой автор и сам забывает, какая из функций программы является основной.

Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать веб-приложение на PHP с полного нуля
Получить курс сейчас!Но мы постараемся так не закапываться. Рассмотрим основы PHP загрузки файла на сервер на примере, который не «отяжелен» различными фичами. То есть это будет просто загрузчик.
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 |
<html> <head> <title></title> </head> <body> <form name="form1" action="chernovik.php" enctype="multipart/form-data" method="post"> <input type="file" name="path" title="Выберите файл"/> </br> </br> <input type="submit" name="button" /> </br> </body> </html> <?php $file = "upload/".$_FILES['path']['name']; move_uploaded_file($_FILES['path']['tmp_name'], $file); if(isset($_FILES['path']['name'])) { echo "Загруженный файл: ".$_FILES['path']['name']."</br>"; echo "Размер: ".$_FILES['path']['size']."байт"; } ?> |
Несколько слов о коде
Теперь рассмотрим тонкости, как загрузить файл на сервер PHP. В теге формы обязательно нужно прописать enctype.
Чаще всего данный атрибут не указывается, но при пересылке файлов нам нужно отключить кодировку. Для этого используется значение multipart/form-data.
Чтобы получить доступ к полям формы, обращаемся к глобальному массиву $_FILES. Файлы не сразу загружаются в указанную папку. Первоначально они сохраняются во временной директории. Ее путь записан в значении элемента массива $_FILES[‘path’][‘tmp_name’]. Таким образом реализуется безопасная загрузка файлов на серверы PHP.
Для перемещения загруженного файла из временной директории в указанную папку используем move_uploaded_file(). Затем с помощью $_FILES выводим размер файла и его имя.
Совершенствуемся
Немного усовершенствуем наш loader. Реализуем PHP загрузку нескольких файлов на серверное пространство:
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 |
<html> <head> <title></title> </head> <body> <form name="form1" action="chernovik.php" enctype="multipart/form-data" method="post"> <input type="file" name="path" title="Выберите первый файл"/></br> </br> <input type="file" name="path1" title="Выберите второй файл"/> </br> </br> <input type="submit" name="button" /> </br> </body> </html> <?php $file = "upload/".$_FILES['path']['name']; $file1 = "upload/".$_FILES['path1']['name']; move_uploaded_file($_FILES['path']['tmp_name'], $file); move_uploaded_file($_FILES['path1']['tmp_name'], $file1); if(isset($_FILES['path']['name'])==true & isset($_FILES['path1']['name'])==true) { echo "Загруженный первый файл: ".$_FILES['path']['name']."</br>"; echo "Размер: ".$_FILES['path']['size']."байт"."</br>"; echo "Загруженный второй файл: ".$_FILES['path1']['name']."</br>"; echo "Размер: ".$_FILES['path1']['size']."байт"."</br>"; } ?> |
Конечно, можно реализовать загрузку файлов на сервер с помощью PHP и Ajax, но тогда придется усложнять наш базовый пример. А этого нам не нужно :).

Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать веб-приложение на PHP с полного нуля
Получить курс сейчас!
Разработка веб-приложения на PHP
Скачайте видеокурс и узнайте, как создать веб-приложение на PHP
Скачать