Главная » Полезные статьи » Язык PHP » Как делать UPLOAD файлов на сервер и о возможных глюках
Распечатать статью

Как делать UPLOAD файлов на сервер и о возможных глюках

Что такое FILE UPLOAD в PHP?

Это возможность передать файлы с компьютера посетилеля в вашу ПХП программы. Это значит, вы получаете файл(ы) от посетителя и что-либо с ними делаете:

  • ничего (человек в пустую будет upload’ить файл)
  • вывести содержимое на экран (если файл был текстовым)
  • записать файл один к одному в каталог на веб-сервере
  • запихнуть фотку (файл=фото) в базу данных

отправка файла с помощью FILE UPLOAD в PHP

создайте файл upload.html такого содержимого:

<html><bodY> <FORM ENCTYPE=»multipart/form-data» ACTION=»upload2.phtml» METHOD=POST> <INPUT TYPE=»hidden» name=»MAX_FILE_SIZE» value=»1000000″> Имя файла: <INPUT NAME=»userfile» TYPE=»file»> <INPUT TYPE=»submit» VALUE=»Отправить»> (нажмите кнопку <b>ОБЗОР</b>, затем <b>ОТПРАВИТЬ</b>) </FORM> </body></html>

Получится пустая html-страница, содержащая форму: поле для ввода имени файла (ничего вводить не надо!), кнопку ОБЗОР, которая открывает окошко для выбора файла, кнопка ОТПРАВИТЬ — отправка формы на сервер.

Действия посетителя:
юзер нажимает обзор, выбирает файл(ы)

юзер нажимает отправить

«Программер» (вы) можете подредактировать
поле ACTION=»upload2.phtml» (имя php-программы, принимающей файл)
поле name=»MAX_FILE_SIZE» value=»1000″ — размер максимально допустимого размера файла для аплода.

прием и использование файла с помощью FILE UPLOAD в PHP

Ваша программа на php (в файле upload2.phtml), чтобы получить отправленный файл НЕ ДОЛЖНА НИЧЕГО ДЕЛАТЬ! Все само! Радуйтесь, товарищи :-)

Перед началом выполнений вашей программы сервер принимает файл, а ПХП-процессор сообщает имя временно файла (переменная $userfile), в котором храниться только что полученный файл. Поэтому вам нужно лишь открыть файл на чтение и считать содержимое. Даже стирать этот временный файл не надо.

Как вывести upload’еный файл на экран? Вот программа (ее надо записать в файл upload2.phtml )

<? echo » Вы загрузили файл размером: <font color=red><b>$userfile_size</b></font> байт<br><br> На вашем компьютере файл назывался: <font color=red><b>$userfile_name</b></font><br><br> На нашем сервере ваш файл был записан для временного храниения по адресу и под именем <font color=red><b>$userfile</b></font><br><br> Ниже его содержимое:<br> <font color=blue><pre>»; // для тех, кто не знает, команда echo implode(«»,file(«имя_файла»)); // выводит содержимое «имя_файла» на экран echo implode(«»,file($userfile)); ?>

о глюках

Попробуйте аплодить таким способом на сервер бинарные файлы. Скорее всего файлы окажутся «битыми»: фотки не будут показываться, программы не запустяться, архивы не распакуются. Текстовые файлы (почти точно) не повредяться. Дело в том, что Русский Апач (ваш веб-сервер) перекодирует все подряд. Например, символ с кодом 0х00 он заменяет на пробел (символ с кодом 0х20). Чтобы выключить эту ненужную перекодировку, допишите в файл httpd.conf из каталога Апача (/usr/local/apache) следующие строки. Если у вас нет доступа к этому файлу и админ сервера не может сделать это за вас, ткните его в эти строки.

<Location /> CharsetRecodeMultipartForms Off </Location>

Строку CharsetRecodeMultipartForms Off можно добавлять в разные места (один раз). Если вы совсем начинающий пользователь и не решите сами, куда писать эту строку, будьте аккуратнее при решении задачи методом тыка.

<? upload файла <html> <head> <title>Загрузка</title> </head> <body topmargin=0 leftmargin=0> <style type=»text/css»> <!— @import url(/style.css); —> </style> <?php $store_dir=’/pub/home/programm/htdocs/incoming/'; if (!$userfile) { ?> <input type=»file» name=»userfile»> <input type=»hidden» name=»MAX_FILE_SIZE» value=»2000000″> <input type=»submit» value=»Отправить»> </form> <?php } else { if (is_uploaded_file($userfile)) { move_uploaded_file($userfile, $store_dir.$userfile_name); print «Файл отправлен <br>\\n»; } else { print «Ошибка, файл не отправлен <br> \\n»; } } ?> </body> </html> ?>

Источник:  npksv.ru

Вы можете оставить комментарий, или обратную ссылку на Ваш сайт.

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

Похожие статьи