Что такое FILE UPLOAD?
Это возможность передать файлы с компьютера посетилеля в вашу ПХП программы. Это значит, вы получаете файл(ы) от посетителя и что-либо с ними делаете:
ничего (человек в пустую будет upload'ить файл)
вывести содержимое на экран (если файл был текстовым)
записать файл один к одному в каталог на веб-сервере
запихнуть фотку (файл=фото) в базу данных (про это написано в статье Бинарные файлы/картинки, показ/просмотр, общение с базой данных)
1. Отправка файла
Создайте файл upload.html такого содержимого:
Получится пустая html-страница, содержащая форму: поле для ввода имени файла (ничего вводить не надо!), кнопку ОБЗОР, которая открывает окошко для выбора файла, кнопка ОТПРАВИТЬ - отправка формы на сервер.
Действия посетителя:
юзер нажимает обзор, выбирает файл(ы)
юзер нажимает отправить
"Программер" (вы) можете подредактировать
поле ACTION="upload2.phtml" (имя php-программы, принимающей файл)
поле name="MAX_FILE_SIZE" value="1000" - размер максимально допустимого размера файла для аплода.
2. Прием и использование
Ваша программа на php (в файле upload2.phtml), чтобы получить отправленный файл НЕ ДОЛЖНА НИЧЕГО ДЕЛАТЬ! Все само! Радуйтесь, товарищи :-)
Перед началом выполнений вашей программы сервер принимает файл, а ПХП-процессор сообщает имя временно файла (переменная $userfile), в котором храниться только что полученный файл. Поэтому вам нужно лишь открыть файл на чтение и считать содержимое. Даже стирать этот временный файл не надо.
Как вывести upload'еный файл на экран? Вот программа (ее надо записать в файл upload2.phtml )
<?
echo "
Вы загрузили файл размером:
$userfile_size байт
На вашем компьютере файл назывался:
$userfile_nameНа нашем сервере ваш файл был записан для временного храниения
по адресу и под именем:
$userfileНиже его содержимое:
:
";
// для тех, кто не знает, команда echo implode("",file("имя_файла"));
// выводит содержимое "имя_файла" на экран
echo implode("",file($userfile));
?>
3. О глюках
Попробуйте аплодить таким способом на сервер бинарные файлы. Скорее всего файлы окажутся "битыми": фотки не будут показываться, программы не запустяться, архивы не распакуются. Текстовые файлы (почти точно) не повредяться. Дело в том, что Русский Апач (ваш веб-сервер) перекодирует все подряд. Например, символ с кодом 0х00 он заменяет на пробел (символ с кодом 0х20). Чтобы выключить эту ненужную перекодировку, допишите в файл httpd.conf из каталога Апача (/usr/local/apache) следующие строки. Если у вас нет доступа к этому файлу и админ сервера не может сделать это за вас, ткните его в эти строки.
CharsetRecodeMultipartForms Off
Строку CharsetRecodeMultipartForms Off можно добавлять в разные места (один раз). Если вы совсем начинающий пользователь и не решите сами, куда писать эту строку, будьте аккуратнее при решении задачи методом тыка.
http://www.php.spb.ru/