PHP

Загрузка файлов на сайт

Задача, собственно, простая - перегрузить файл пользователя с егоь компьютера на сервер. В простейшем варианте файл будет загружаться с тем же названием, как и у пользователя. Для загружаемых файлов нужна директория, в которую они будут складываться. Код скрипта:

<?php
$dir="TEMP";
if(empty($_FILES['file']['tmp_name'])){
$upl="<form method=post enctype=multipart/form-data>
<input type=file name=file ><BR>
<input type=submit value=Загрузить>
</form>"; echo $upl;}
elseif($_FILES["file"]["size"] > 1024*200)
{echo "Размер файла превышает допустимый"; exit;}
elseif(!is_uploaded_file($_FILES['file']['tmp_name'])||!copy($_FILES['file']['tmp_name'],$dir.chr(47).$_FILES['file']['name']))
{$inf="Не удалось загрузить файл";}
else {$inf="Файл ".$_FILES['file']['name']." загружён на сервер"; }
echo $inf;
?>

Теперь подробнее. Первым делом запишем название директории для файлов (оно может быть любым) в переменную $dir:

$dir="TEMP";

Если скрипт не получил имени загружаемого файла:

if(empty($_FILES['file']['tmp_name'])){

то он запишет код формы загрузки файла в переменную $upl и покажет форму:

$upl="<form method=post enctype=multipart/form-data>
<input type=file name=file ><BR>
<input type=submit value=Загрузить>
</form>"; echo $upl;}

Если имя файла получено, скрипт определит размер файла и, если размер превышает допустимый (здесь максимальный размер 1024*200=200 килобайт, если его не указывать, то по умолчанию это 2 мегабайта), скрипт сообщит об этом пользователю и закончит свою работу:

elseif($_FILES["file"]["size"] > 1024*200)
{echo "Размер файла превышает допустимый"; exit;}

Если не удалось выгрузить файл пользователя во временную директорию (загрузка идет всегда в два этапа) или не удалось из временной переписать в конечную директорию, скрипт формирует сообщение о неудаче:

elseif(!is_uploaded_file($_FILES['file']['tmp_name'])||!copy($_FILES['file']['tmp_name'],$dir.chr(47).$_FILES['file']['name']))
{$inf="Не удалось загрузить файл";}

Ну и, наконец, если все обошлось благополучно, скрипт сделает соответствующую запись:

else {$inf="Файл ".$_FILES['file']['name']." загружён на сервер"; }

Теперь осталось сообщить пользователю о результатах загрузки::

echo $inf;

Сейчас можно скачать и попробовать скрипт в работе. Файлы в процессе загрузки на сервер можно переименовывать и фильтровать. Как это сделать - здесь.

Рейтинг@Mail.ru