Страница 2 из 3 PHP код для обработки формы (файл myup.php): <?php // Загрузка файлов на сервер // Если register_globals=Off
// Если upload файла if(isset($_FILES["myfile"])) { $myfile = $_FILES["myfile"]["tmp_name"]; $myfile_name = $_FILES["myfile"]["name"]; $myfile_size = $_FILES["myfile"]["size"]; $myfile_type = $_FILES["myfile"]["type"]; $error_flag = $_FILES["myfile"]["error"];
// Если ошибок не было if($error_flag == 0) { print("Имя файла на нашем сервере (во время запроса): ".$myfile."<br>"); print("Имя файла на компьютере пользователя: ".$myfile_name."<br>"); print("MIME-тип файла: ".$myfile_type."<br>"); print("Размер файла: ".$myfile_size."<br><br>");
// Получаем содержимое файла $fp = fopen($myfile,"r"); $content = fread($fp, filesize($myfile)); fclose($fp);
// Вывод содержимого файла print($content);
} // end of if 2 } // end of if 1 ?> При загрузке можно проверять размер файла ($myfile_size) и если его размер превышает требуемый, то вывод файла не производить. Значения $_FILES["myfile"]["error"]: 0 - ошибок не было, файл загружен. 1 - размер загруженного файла превышает размер установленный параметром upload_max_filesize в php.ini 2 - размер загруженного файла превышает размер установленный параметром MAX_FILE_SIZE в HTML форме. 3 - загружена только часть файла 4 - файл не был загружен (Пользователь в форме указал неверный путь к файлу). Если вам необходимо сохранить загруженный файл, то это можно сделать с помощью функций:
- copy ( string source, string dest);
- move_uploaded_file ( string filename, string destination);
Функция copy() копирует файл source в место назначения dest. Функция move_uploaded_file() перемещает загруженный файл filename в место назначение указанное в параметре destination. Ещё хочется отметить что при одновременной загрузке нескольких файлов т.е. когда HTML форма содержит: <INPUT NAME="myfile1" TYPE="file"> <INPUT NAME="myfile2" TYPE="file"> <INPUT NAME="myfile3" TYPE="file"> массив $_FILES[] будет иметь следующую структуру: $_FILES["myfile1"]["tmp_name"] - Имя временного файла 1 $_FILES["myfile1"]["name"] - Имя файла на компьютере пользователя 1 $_FILES["myfile1"]["size"] - Размер файла 1 в байтах $_FILES["myfile1"]["type"] - MIME-тип файла 1 $_FILES["myfile1"]["error"] - код ошибки для файла 1. $_FILES["myfile2"]["tmp_name"] - Имя временного файла 2 $_FILES["myfile2"]["name"] - Имя файла на компьютере пользователя 2 $_FILES["myfile2"]["size"] - Размер файла 2 в байтах $_FILES["myfile2"]["type"] - MIME-тип файла 2 $_FILES["myfile2"]["error"] - код ошибки для файла 2. $_FILES["myfile3"]["tmp_name"] - Имя временного файла 3 $_FILES["myfile3"]["name"] - Имя файла на компьютере пользователя 3 $_FILES["myfile3"]["size"] - Размер файла 3 в байтах $_FILES["myfile3"]["type"] - MIME-тип файла 3 $_FILES["myfile3"]["error"] - код ошибки для файла 3. это пример для одновременной загрузки трёх файлов. Таким же образом можно загружать и двоичные файлы, например файлы картинок gif, jpeg и т.д. У меня все двоичные файлы загружались без повреждений (без глюков), но
по словам Дмитрия Бородина ( href="../../php.spb.ru/default.htm">https://php.spb.ru/) возможно, что при загрузке двоичных файлов у вас возникнут проблемы. Файлы будут загружаться с перекодировкой. Вот часть статьи "Какделать UPLOAD файлов на сервер и о возможных глюках" которая возможно поможет вам устранить причину проблемы: |