Форма загрузки файлов на PHP, с необходимыми проверками.
Пример использования:
Форма:
<form action="./upload.php" method="post" enctype="multipart/form-data">
<p>
<label for="file">Выберите файл: </label> <input type="file" name="userfile" id="file"> <br />
<button>Закачать файл</button>
<p>
</form>
Обработчик формы – upload.php
:
<?php
// Конфигурация
$allowed_filetypes = array('.jpg','.gif','.bmp','.png'); // разрешенные типы файлов
$max_filesize = 524288; // максимальный размер файла в байтах (0.5MB).
$upload_path = 'files/'; // папка для загрузки файлов на сервере (папка 'files').
$filename = $_FILES['userfile']['name']; // получить имя файла с расширением.
$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1); // получить расширение файла.
// проверить допустимость файла, если не разрешено, то вызвать функцию DIE и вывести сообщение пользователю.
if(!in_array($ext,$allowed_filetypes))
die('Вы пытаетесь загрузить неразрешенный тип файла.');
// проверка размера файла, если превышает, то DIE и сообщение пользователю.
if(filesize($_FILES['userfile']['tmp_name']) > $max_filesize)
die('Вы пытаетесь загрузить слишком большой файл.');
// проверка возможности загрузки в указанный каталог, если нет, то DIE и информация юзеру.
if(!is_writable($upload_path))
die('Вы не можете загрузить в указанную папку; смените CHMOD на 777.');
// загрузка файла в указанную папку.
if(move_uploaded_file($_FILES['userfile']['tmp_name'],$upload_path . $filename))
echo 'Ваш файл успешно загружен, можете его посмотреть <a href="' . $upload_path . $filename . '" title="Ваш файл">здесь</a>'; // сработало.
else
echo 'Во время загрузки произошла ошибка. Попробуйте снова.'; // не сработало :(.
?>
*Стоит отметить, что по умолчанию PHP не будет обрабатывать загрузку файлов больше 2 Мб, и если требуется больше, то нужно установить соответствующий размер upload_max_filesize
и post_max_size
в файле php.ini
.
Смотреть пример -> в примере запись в папку не разрешена.
Комментарии:
Марк Израйлев#
Гигантское Вам спасибо за предоставленный код! Долго искал рабочий и понятный php-скрипт загрузки файлов, нашёл только здесь ????
(???? = эмодзи сердечка)
coder hol es#
Пожалуйста) Рад, что пригодилось)