Загрузка фалов на сервер уже не редкость. Оно используется буквально везде: от загрузки аватарки в вашем профиле до различных хостингов хранящий файлы. Давайте разберем, как это всё работает и получим полноценный, работающий php скрипт загрузки файлов на сервер.
Загрузка файлов на сервер осуществляется с помощью multipart-формы, в которой есть поле загрузки файла. В качестве параметра указывается значение
Для начала, создадим папку с именем file возле нашего исполняющего файла (папка в которую будут перемещаться файлы из временной папки temp) после, создадим форму на которой будет :
- Кнопка для выбора файла, который мы хотим загрузить на сервер
- Кнопка которая загрузит наш файл
… и так, приступим
<form action="upload.php" method="POST" enctype="multipart/form-data"> <input type="file" name="uploadfile" /> <input type="submit" value="Загрузить" /> </form>
После того как мы добавили форму, приступим к самой загрузке
<?php /* * $_FILES['uploadfile']['name'] - имя файла до его отправки на сервер, например, pict.gif; $_FILES['uploadfile']['size'] - размер принятого файла в байтах; $_FILES['uploadfile']['type'] - MIME-тип принятого файла (если браузер смог его определить), например: image/gif, image/png, image/jpeg, text/html; $_FILES['uploadfile']['tmp_name'] (так мы назвали поле загрузки файла) - содержит имя файла во временном каталоге, например: /tmp/phpV3b3qY; $_FILES['uploadfile']['error'] - Код ошибки, которая может возникнуть при загрузке файла. */ if(isset ($_POST['load'])) // проверка нажали ли мы кнопку Загрузить { if(is_uploaded_file($_FILES['uploadfile']['tmp_name'])) // проверка загружен ли наш $_FILES['uploadfile'] { $newname=time(); // генерируем новое имя (это для того чтобы, имена файлов не совпадали) $i=pathinfo($_FILES['uploadfile']['name']); // возвращает информацию о path в виде ассоциативного массива или строки в зависимости от options. move_uploaded_file($_FILES['uploadfile']['tmp_name'],"file/$newname.{$i['extension']}"); // move_uploaded_file перемещает загруженный файл в новое место в нашем случай из временной папки temp в папку file. в $i['extension'] храняться расширения нашего файла. } } ?>
В итоге у нас должен получится вот такой скрипт загрузки файлов на сервер:
<?php if(isset ($_POST['load'])) { if(is_uploaded_file($_FILES['uploadfile']['tmp_name'])) { $newname=time(); $i=pathinfo($_FILES['uploadfile']['name']); move_uploaded_file($_FILES['uploadfile']['tmp_name'],"file/$newname.{$i['extension']}"); } } ?> <form action="upload.php" method="POST" enctype="multipart/form-data"> <input type="file" name="uploadfile" /> <input type="submit" name="load" value="Загрузить" /> </form>
Получайте новые статьи блога прямо себе на почту
Здравствуйте. Спасибо за статью.
Но у меня возник вопрос.
Когда я тестирую стрницу upload.php на локальном компьютере через денвер все работает, но когда загружаю на хостинг ничего не получаеться, загружаю картинку, но в папке её не появляеться. Может хостинг не поддерживает?