Axel177 |
Дата: Вторник, 16.10.2012, 15:55 | Сообщение # 1
|
Боец
Сообщений: 130
Статус: Offline
|
Функция загрузки файлов на сервер.
Задача: Требуется разработать скрипт для загрузки файлов на сервер. Возможность изменять директорию от скрипта к скрипту. Решать самостоятельно, перезаписывать загружаемый файл в случаи совпадения имени с уже загруженным, или нет. Определять размер допустимый для загрузки файла. Самостоятельной функции по загрузки файлов на сервер, в PHP не существует. Значит создадим свою, пользовательскую функцию, которую будем подключать к любому скрипту, который нуждается в использовании формы загрузки файлов на сайте. Назовём функцию upload. Листинг № 1 - Загрузка файлов. Пользовательская функция PHP upload(), файл funcs.php <?php
// Загрузка файлов function upload($filename, $pach, $flag = false) { // $filename - это свойство name в input // $pach - директория куда будет сохранён загруженный файл // директория загрузки должна иметь доступ 777 // $flag - по умолчанию false (0), // определяет перезапись существующего файла в директории, если выставлен TRUE (1) // Проверяет существует ли директория и возможно ли её открыть из этого скрипта if(!opendir($pach)){return 'Директория сохранения файлов, указана неверно!';} // устанавливаем директорию загрузки файла $uploadfile = $pach.basename($_FILES[$filename]['name']); // Устанавливаем вариант перезаписи файла // если false, файл не перезаписывается, а выдаётся предупреждение. if(!$flag){ // Проверяем существует ли такой файл в директории if(is_file($uploadfile)) return('ВНИМАНИЕ! Такой файл уже существует.'); } if(!empty($filename)) { // Ограничения размера загружаемого файла if($_FILES[$filename]['size'] > 1024*2*1024) { return("Размер файла превышает 2 мегабайта"); } // Проверяем загружен ли файл if(is_uploaded_file($_FILES[$filename]['tmp_name'])) { // Если файл загружен успешно, перемещаем его // из временной директории в конечную if(copy($_FILES[$filename]['tmp_name'],$uploadfile)) { return('OK! Файл успешно загружен.'); } else { return('<strong>'/*. $_FILES[$filename]['tmp_name'].$pach */.$_FILES[$filename]['name'].' </strong> - не является правильно загруженным файлом или не может быть перемещён из временной директории.'); } } else { switch($_FILES[$filename]['error']) { case 1: echo 'Размер файла превышает допустимый.'; break; case 2: echo 'Размер файла превышает допустимый.'; break; case 3: echo 'Загружаемый файл был получен только частично.'; break; case 4: echo 'Файл не был загружен!'; break; } } } else { return('Не указан файл для загрузки!'); } }
?> Следующим шагом будет создать форму для пользователя. Скрипт ниже. Листинг № 2 - Форма загрузки файлов на сервер form_upld.php <?php
// Подключаем файл функций include 'fnc/funcs.php';
// Проверяем правильность отправки данных именно с той формы // в которой значение кнопки, т.е. надпись равна - 'Загрузить' // Только если это значение совпадает будет активирована // наша функция загрузки файлов. if($_POST['go'] == 'Загрузить') { echo upload('filename', './upload2/', $_POST['f']); }
?> <!-- Форма загрузки файлов --> <form action="" method="post" enctype="multipart/form-data"> <input name="filename" type="file"> <br> <input name="f" type="checkbox" value="1"> <sup> - перезаписать</sup> <br> <input name="go" type="submit" value="Загрузить"></form> Задача решена. Внимательно читайте комментарии к коду. Пишите если что-то не понятно или нашли ошибку. Урок закончен.
C новым годом, друзья!
|
|
|
|