Загрузка файлов на серверЗдесь будет рассмотрена загрузка файлов на сервер по протоколу HTTP. Рассмотрим два варианта конфигурации PHP:
Upload файлов при register_globals=On Содержание формы (файл upload.html): <html>
После того как пользователь выбрал имя файла и нажал кнопку Загрузить, PHP помещает загружаемый файл во временную директорию указанную в параметре upload_tmp_dir файла php.ini. В этой директории этот файл будет храниться только во время запроса! После запроса PHP удалит этот временный файл. Поэтому загружаемый файл нужно куда-нибудь переместить (если он вам понадобиться в дальнейшем). Явно удалить временный файл можно функцией unlink(string filename). Здесь рассмотрим загрузку текстового файла и вывод его содержимого. Скрипт обработки: <?php
Пояснения: $myfile - имя временного файла, в котором находятся загруженные данные; Когда пользователь отправляет форму, PHP автоматически определяет ещё несколько переменных: При загрузке текстовых файлов переменная $myfile_type = "text/plain", при загрузке изображения gif переменная $myfile_type = "image/gif". При register_globals=On можно пользоваться массивом $_FILES[]. Upload файлов при register_globals=Off $_FILES["myfile"]["tmp_name"] - Имя временного файла PHP код для обработки формы: <?php
При загрузке можно проверять размер файла ($myfile_size) и если его размер превышает требуемый, то вывод файла не производить. Значения $_FILES["myfile"]["error"]: Если вам необходимо сохранить загруженный файл, то это можно сделать с помощью функций: copy ( string source, string dest);
Функция copy() копирует файл source в место назначения dest. Ещё хочется отметить что при одновременной загрузке нескольких файлов т.е. когда HTML форма содержит: <INPUT NAME="myfile1" TYPE="file">
массив $_FILES[] будет иметь следующую структуру: $_FILES["myfile1"]["tmp_name"] - Имя временного файла 1 $_FILES["myfile2"]["tmp_name"] - Имя временного файла 2 $_FILES["myfile3"]["tmp_name"] - Имя временного файла 3 это пример для одновременной загрузки трёх файлов. Таким же образом можно загружать и двоичные файлы, например файлы картинок gif, jpeg и т.д. У меня все двоичные файлы загружались без повреждений (без глюков), но по словам Дмитрия Бородина (http://php.spb.ru) возможно, что при загрузке двоичных файлов у вас возникнут проблемы. Файлы будут загружаться с перекодировкой. Вот часть статьи "Как делать UPLOAD файлов на сервер и о возможных глюках" сайта http://php.spb.ru, которая возможно поможет вам устранить причину проблемы: Попробуйте аплодить таким способом на сервер бинарные файлы. Скорее всего файлы окажутся "битыми": фотки не будут показываться, программы не запустятся, архивы не распакуются. Текстовые файлы (почти точно) не повредятся. Дело в том, что Русский Апач (ваш веб-сервер) перекодирует все подряд. Например, символ с кодом 0х00 он заменяет на пробел (символ с кодом 0х20). Чтобы выключить эту ненужную перекодировку, допишите в файл httpd.conf из каталога Апача (/usr/local/apache) следующие строки. Если у вас нет доступа к этому файлу и админ сервера не может сделать это за вас, ткните его в эти строки. <Location /> CharsetRecodeMultipartForms Off </Location> Строку CharsetRecodeMultipartForms Off можно добавлять в разные места (один раз). Если вы совсем начинающий пользователь и не решите сами, куда писать эту строку, будьте аккуратнее при решении задачи методом тыка. |
КОНТАКТЫ
г. Екатеринбург info@vismech.ru |
текущее: НОВОСТИ 05.12.2013 - Уход за флэш-накопителем 05.12.2013 - Компьютер самопроизвольно выключается 05.12.2013 - Почему не запускается компьютер? 27.11.2013 - Canon Legria HF R406 - Описание видеокамеры 27.11.2013 - TravelMate P645 новый лэптоп бизнес-класса от Acer |