Калининград+7.962.2626.555

Суперглобальный массив $_FILES

11.01.2012

Начнем с того, что если в форме присутствует несколько полей для выбора файлов, то есть два способа присвоения имен:

  1. input type="file" name="file1"
    input type="file" name="file2"
    input type="file" name="file3"
  2. input type="file" name="Files[file1]"
    input type="file" name="Files[file2]"
    input type="file" name="Files[file3]"

В первом случае структура суперглобального массива $_FILES будет такой:

[file1] => Array
   (
      [name] =>
      [type] =>
      [tmp_name] =>
      [error] => 4
      [size] => 0
   )

[file2] => Array
   (
      [name] =>
      [type] =>
      [tmp_name] =>
      [error] => 4
      [size] => 0
   )

[file3] => Array
   (
      [name] =>
      [type] =>
      [tmp_name] =>
      [error] => 4
      [size] => 0
   )

Во втором:

[Files] => Array
   (
      [name] => Array
         (
           [file1] =>
           [file2] =>
           [file3] =>
         )

      [type] => Array
         (
           [file1] =>
           [file2] =>
           [file3] =>
         )

      [tmp_name] => Array
         (
           [file1] =>
           [file2] =>
           [file3] =>
         )

      [error] => Array
         (
           [file1] => 4
           [file2] => 4
           [file3] => 4
         )

      [size] => Array
         (
           [file1] => 0
           [file2] => 0
           [file3] => 0
         )
   )

Теперь что касается пяти возращаемых параметров:

  1. name — имя и расширение локального файла (без пути);
  2. type — якобы тип файла, но этому параметру верить нельзя, т.к. он формируется лишь на основе расширения файла;
  3. tmp_name — полный путь к временному файлу на сервере;
  4. error — код ошибки:
    • 0 — файл загружен на сервер, ошибок нет;
    • 1 — файл не был загружен из-за того, что его размер больше максимально допустимого размера, определяемого директивой upload_max_filesize;
    • 2 — файл не был загружен из-за того, что его размер превысил значение MAX_FILE_SIZE, указанное в форме;
    • 3 — файл не был загружен из-за того, что был получен не полностью (эта ошибка может возникнуть, если сервер закрывает соединение);
    • 4 — файл не был загружен из-за того, что просто не был выбран (т.е. поле выбора на момент отправки данных из формы было пустым).
  5. size — размер принятого файла в байтах.