Начнем с того, что если в форме присутствует несколько полей для выбора файлов, то есть два способа присвоения имен:
- input type="file" name="file1"
input type="file" name="file2"
input type="file" name="file3" - 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
)
)
Теперь что касается пяти возращаемых параметров:
- name — имя и расширение локального файла (без пути);
- type — якобы тип файла, но этому параметру верить нельзя, т.к. он формируется лишь на основе расширения файла;
- tmp_name — полный путь к временному файлу на сервере;
- error — код ошибки:
- 0 — файл загружен на сервер, ошибок нет;
- 1 — файл не был загружен из-за того, что его размер больше максимально допустимого размера, определяемого директивой upload_max_filesize;
- 2 — файл не был загружен из-за того, что его размер превысил значение MAX_FILE_SIZE, указанное в форме;
- 3 — файл не был загружен из-за того, что был получен не полностью (эта ошибка может возникнуть, если сервер закрывает соединение);
- 4 — файл не был загружен из-за того, что просто не был выбран (т.е. поле выбора на момент отправки данных из формы было пустым).
- size — размер принятого файла в байтах.