В более поздних версиях есть возможность использовать специальный массив ($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"); } ?>
|