PHP Загрузка файлов на сервер
- Подробности
- Категория: PHP
- Просмотров: 11057
На PHP часто нужна загрузка файлов на сервер...приятно же, если у вашего сайта есть возможность загружать файлы на сайт: картинки или другие текстовые файлы или другие форматы...поговорим в этой статье об этом...
Итак нам нужно научиться загружать файл на сервер с помощью PHP. Для этого нам нужно знать, что такие загрузки происходят с помощью простой multipart-формы, у которой имеется специальное поле для загрузки файла.
<form action="" method="POST" enctype="multipart/form-data">
<input type="file" name="uploadfile">
<input type="submit" name="submit" value="Загрузить"></form>
</form>
В качестве параметра enctype в такой форме нужно указывать значение multipart/form-data. Отправляется методом POST.
Как обрабатывать multipart-формы на PHP
После нажатия кнопки "Загрузать" PHP помещает файл во временную директорию и задает файлу временное имя(оно отличается от загружаемого - ниже будет видно). И сразу же создается 4 переменных глобального массива $_FILES:
- $_FILES['uploadfile']['name'] - имя файла до его отправки на сервер (то есть оригинальное);
- $_FILES['uploadfile']['size'] - размер принятого файла в байтах;
- $_FILES['uploadfile']['type'] - MIME-тип принятого файла (если браузер смог его определить), например: image/gif, image/png, image/jpeg, text/html;
- $_FILES['uploadfile']['tmp_name'] - содержит имя файла во временном каталоге, например: /tmp/php57Opq2Y;
- $_FILES['uploadfile']['error'] - Код ошибки, которая может возникнуть при загрузке файла. Ключ ['error'] был добавлен в PHP 4.2.0.
Обратите внимание: после окончания работы скрипта загрузки файла на сервер - временный файл будет удален, поэтому необходимо скопировать этот файл из временной директории в какую-либо папку, например files при помощи функции copy(); Не нужно применять функцию move(), так как у copy в этот момент есть 2 преимущества: временный файл самостоятельно удалиться, и если временный каталог находится на другом носителе - то выведется ошибка.
Подсказка: процесс должен начинаться по условию нажатия кнопки "Загрузить", то ест к примеру: if($_POST['submit']){то выполняй действия}
Картинка, которая наглядно покажет 4 созданные переменные глобального массива $_FILES:
Я думаю теперь все у вас прояснилось, что куда попадает и что-где создается...и далее манипулирую этими полями, можем начать работать с этой формочкой на php
Примерно так может выглядеть сам скрипт:
if($_POST['submit']){
@mkdir("files", 0777); // создаем папку, если ее нет то ошибки не будет, задаем права
/*echo "<pre>";
print_r($_FILES);
echo "</pre>";*/
$uploaddir = 'files/';
$uploadfile = $uploaddir.basename($_FILES['uploadfile']['name']);
if(copy($_FILES['uploadfile']['tmp_name'], $uploadfile)){
echo "<h3>Файл успешно загружен на сервер</h3>";
}else{
echo "<h3>Не удалось загрузить файл на сервер</h3>";
exit;
}
//Данные о загруженном файле
echo "<h3>Информация о загруженном на сервер файле: </h3>";
echo "<p>Оригинальное имя загруженного файла:<b> ".$_FILES['uploadfile']['name']."</b></p>";
echo "<p>Mime-тип загруженного файла:<b> ".$_FILES['uploadfile']['type']."</b></p>";
echo "<p>Размер загруженного файла в байтах:<b> ".$_FILES['uploadfile']['size']."</b></p>";
echo "<p>Временное имя файла: <b>".$_FILES['uploadfile']['tmp_name']."</b></p>";
}
Вот так вот и происходит процесс загрузки файла на сервер средствами PHP.
Надеюсь было кому-либо полезно!
Смотрите также:
Комментарии
RSS лента комментариев этой записи