Загрузка файлов на сервер (php).


В данной статье мы рассмотрим, как можно загрузить на сервер файл, используя средства php и html. С помощью html мы будет создать форму для загрузки файлов, а php-скрипт будет ее обрабатывать. Загрузка файлов на сервер используется на многих сайтах, где пользователям позволяется загружать собственный контент. Обратите внимание, что обычно конфигурации сервера позволяют загружать файлы, не превышающие определенного размера, но для загрузки обычных картинок или текстовых файлов этого вполне достаточно.

1. Создаем HTML-форму.

1
2
3
4
5
6
<form action="/load.php"  method="post" enctype="multipart/form-data" name="test_form">
Выберите файл для загрузки:<br>
<input type="file" name="my_file">
<br><br>
<input type="submit" value="загрузить">
</form>

Как видно выше, в атрибутах тега form мы задаем метод отправки данных – post. Атрибут action указываем, какой файл на сервере будет обрабатывать переданные данные. Атрибут enctype указывает на метод, с помощью которого будут кодироваться наши данные для отправки на сервер. Также в нашу форму мы добавляем поле с типом «file» и кнопку — «submit». Текстовое содержимое кнопки можно задавать в атрибуте value. При нажатии на кнопку данные передаются на сервер. Перед отправкой поле типа «file» можно проверить, не пустое ли оно?

2. Создаем php-скрипт для обработки полученного файла.

Файл load.php получает массив данных $_FILES. Если мы «распечатаем» наш массив, то получим примерно такое содержимое:

1
2
3
4
5
6
7
8
9
10
11
Array
(
    [my_file] =&gt; Array
        (
            [name] =&gt; foto.jpg
            [type] =&gt; image/jpeg
            [tmp_name] =&gt; /tmp/phpdxSXeV
            [error] =&gt; 0
            [size] =&gt; 19880
        )
)

Как видите, это массив, содержащий информацию о загружаемом файле: его имя, тип, размер и путь к временному файлу, где собственно и хранится наш загружаемый объект, пока мы его не переместим в другое место.

Любые данные мы можем получить следующим образом:

1
2
3
4
5
6
<?php
$file_name = $_FILES['my_file']['name'];
$file_type = $_FILES['my_file']['type'];
$file_size = $_FILES['my_file']['size'];
$file_path = $_FILES['my_file']['tmp_name'];
?>

Если вы хотите ограничить загрузку пользователями файлов только определенного типа и размера, то получив такие данные мы можем сделать проверку — соответствует ли файл нашим требованиям. Кстати, это настоятельно рекомендуется делать.

Теперь, когда мы получили данные о файле, его можно переместить в нужную нам директорию для постоянного хранения. Для этого используем php-функцию move_uploaded_file().

1
2
3
<?php
move_uploaded_file($file_path, "{$_SERVER['DOCUMENT_ROOT']}/images/foto/".$file_path);
?>

Мы используем $_SERVER[‘DOCUMENT_ROOT’] для получения полного пути к нужной нам папке в корне нашего сайта. В корне сайта у нас находится папка images, а в ней подпапка foto.

Функция move_uploaded_file() переместит загруженную картинку в указанную директорию.





Другие посты

Категория: PHP-скрипты

Оставить комментарий