DataLife Engine > PHP > Закачка файла на сервер с PHP

Закачка файла на сервер с PHP


21 февраля 2008. Разместил: podpole
В более поздних версиях есть возможность использовать специальный массив ($http_post_files),
но в данном уроке описывается более ранний метод.

В нашем примере мы будем использовать следующий код html формы для закачки файла:

< form method="post" enctype="multipart/ form-data" action=" script.php">
< input type="hidden" name="max_file_size" value="1000">
< input type="file" name="userfile">
< input type="submit">
form




Скрытое поле max_file_size (должно стоять перед тэгом < input type=file>) указывает
на максимально допустимую длину файла в байтах. То есть все файлы, длина которых
будет превышать указанное значение, не будут посылаться броузером на сервер.
При срабатывании события submit, данные становятся доступны в php скрипте автоматически,
то есть Вам не надо проводить разбор http запроса или пользоваться дополнительными модулями.
php сам заботится о том, чтобы Вы могли считывать значения соответствующих переменных.
Эти переменные наследуют левую часть названия(до символа '_') от имени поля, которое было указано в html коде.

Если html код такой:

< input type="file" name="userfile">

то php переменные буду такими:

$userfile: Имя временного файла на сервере, который был создан для закачки.
Вы можете использовать эту перменную чтобы считать содержимое закаченного файла
или скопировать этот временной файл в нужную директорию на сервере.

$userfile_name: Имя файла на пользовательской машине.
Этот как раз имя того файла, который был выбран для закачки на броузере.

$userfile_size: Длина закаченного файла в байтах.

$userfile_type: mime-тип закаченного файла, если броузер указал это значение при посылке.
Например: "image/gif".

Для проверки удачной закачки файла, используется функция is_uploaded_file($userfile),
которая возвращает true если переменная $userfile содержит имя закаченного файла,
и false в обратном случае.

move_uploaded_file($userfile, "/place/to/put/uploaded/file/name.it"): функция, которая
переносит временный файл туда, куда Вы укажите.

Ниже приведен php текст, который закачивает на сервер и сохраняет закаченные файлы.



<?
if (is_uploaded_file($userfile)) {
move_uploaded_file($userfile, "/place/file.new");
}
?>

А можно сделать тоже самое, используя функцию copy:
<?
if (is_uploaded_file($userfile)) {
copy($userfile, "/place/file.new");
}
?>