Загрузка файлов на сервер
Страница 2.


 

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 файлов на сервер и о возможных глюках" которая возможно поможет
вам устранить причину проблемы:

 
« Предыдущая статья   Следующая статья »