Назад в раздел
Как делать UPLOAD файлов на сервер и о возможных глюках.
div.main {margin-left: 20pt; margin-right: 20pt}
Как делать UPLOAD файлов на сервер и о возможных глюках.
Что такое 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 )
== 3 == (о глюках)Попробуйте аплодить таким способом на
сервер бинарные файлы. Скорее всего файлы окажутся "битыми": фотки не будут
показываться, программы не запустяться, архивы не распакуются. Текстовые файлы
(почти точно) не повредяться. Дело в том, что Русский Апач (ваш веб-сервер)
перекодирует все подряд. Например, символ с кодом 0х00 он заменяет на пробел (символ с кодом 0х20). Чтобы выключить эту ненужную перекодировку,
допишите в файл httpd.conf из каталога Апача
(/usr/local/apache) следующие строки. Если у вас нет доступа к этому файлу и
админ сервера не может сделать это за вас, ткните его в эти строки.
CharsetRecodeMultipartForms Off
Строку CharsetRecodeMultipartForms
Off можно добавлять в разные места (один раз). Если вы совсем
начинающий пользователь и не решите сами, куда писать эту строку, будьте
аккуратнее при решении задачи методом тыка.
Можно почитать: на
счет разных способов вставки данной команды (CharsetRecodeMultipartForms
Off)
Можно прочитать данную статью, но написанную другими
соловами, другим человеком и на другом сайте - http://www.leosha.f2s.com/php/upload.htm
Вопросы? Пишите: dima@php.spb.ru
|
|
|
|