Скрипт загрузки файлов

Собственно, полноценный скрипт, который можно скачать (для ленивых:), я не делал, но подробно опишу что и как.
Итак, написана функция загрузки файлов

<?
function uploadfile($file,$updir,$dims,$tmpfile) {
	global $dim; // сделаем расширение файла доступным за пределами функции
	$name=(strrev($file)); //делаем реверс строки
	$file=explode("." , $name,2); // разбиваем ее на две части - после точки и до точки
	$dim = $file[0]; // получаем реверсивное расширение файла (т.е. наоборот, jpg =gpj)
	$dim=strtolower((strrev($dim)));// делаем нижний регистр,  и реверс, чтобы получить читаемое расширение
	$name=(strrev($file[1]));// получаем читаемое имя файла, может пригодится

	if (!@in_array($dim, $dims)) {//проверяем а не пытается ли кто нибудь закачать скрипт вместо фото
	   return 2; // неверное расширение файла
	}
	else {
			if(move_uploaded_file($tmpfile,$updir.$name.'.'.$dim)) // если все ок
				{
				global $file_name; // делаем глобальную переменную
				$file_name= date("Y-n-j-H-i-s").'_file_'.rand(1,1000).'.'.$dim;// делаем уникальное имя для файла
				rename($updir.$name.'.'.$dim, $updir.$file_name ); //переименовать
				return 1; // все ок файл загружен
				}
				else
				{
					return 0;	// не удалось загрузить файл, возможно права на папку неверно прописаны
				}
		}
}

?>

Как видите, функция возвращает три варианта ответа:

-1 все ок, файл успешно загружен

-2 была попытка загрузить файл с расширением. которое не предусмотрено нами

-3 не удалось загрузить файл по причине, например, невозможности писать в папку – надо поиграться с правами

Далее создаем форму

  <form id="form1" name="form1" enctype="multipart/form-data" method="post" action="">

                                    <label for="kvitancia">Выберите файл для загрузки</label>
                                    <input type="file" name="file" id="file" />
								    <br />
								    <br />

							         <label>
							           <input type="submit" name="go" id="go" value="Отправить" />
						            </label>
								  </form>

теперь используем функцию по отправке формы

if (!empty($_FILES['file']['name']))
	{
		if (uploadfile($_FILES['file']['name'],'./docs/',array('jpg','gif','png','jpeg'),$_FILES['file']['tmp_name'])==1)
			{
				$info =  'загружено';

			}
			elseif(uploadfile($_FILES['file']['name'],'docs',array('jpg','gif','png','jpeg'),$_FILES['file']['tmp_name'])==0)
			{
			$info = 'Не удалось загрузить';
			}
			elseif(uploadfile($_FILES['file']['name'],'docs',array('jpg','gif','png','jpeg'),$_FILES['file']['tmp_name'])==2)
			{
			$info = 'Неверный тип файла '. $dim;
			}
	}

В этом коде мы проверяем, какой ответ получен при использовании функции, и выводим соответствующее сообщение. Немного распишу что тут где
Рассмотрим описание функции

uploadfile($file,$updir,$dims,$tmpfile)

$file – имя файла, записанное в переменную $_FILES, в нашем случае $_FILES[‘file’][‘name’] – где file это имя поля для загрузки в форме, а name – имя загружаемого этим полем файла.
$updir – директория, в которую будет загружаться файл.
$dims – массив с расширениями, разрешенными к использованию, формат написания array(‘jpg’,’gif’,’png’,’jpeg’)
$tmpfile – имя временного файла на сервере (после загрузки файла на сервер он вначале попадает во временную папку, и ему назначается другое имя), в нашем случае $_FILES[‘file’][‘tmp_name’], где file это имя поля для загрузки в форме, а tmp_name – имя файла на сервере.

Есть вопросы? Тут рядом комментарии )