Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
array (
'name' => array (
'files' => array (
0 => array (
'name' => 'Новый текстовый документ.txt',
'type' => 'text/plain',
'tmp_name' => '/tmp/phpFYV1jb',
'error' => 0,
'size' => 13950,
),
1 => array (
'name' => 'Безымянный.png',
'type' => 'image/png',
'tmp_name' => '/tmp/phpOcCqkl',
'error' => 0,
'size' => 59329,
),
),
),
)$files = myFwRequest::Files();
foreach($files as $item) {
echo $item->name;
...
$item->saveAs($path);
}
function multiple(array $_files, $top = TRUE)
{
$files = array();
foreach($_files as $name=>$file){
if($top) $sub_name = $file['name'];
else $sub_name = $name;
if(is_array($sub_name)){
foreach(array_keys($sub_name) as $key){
$files[$name][$key] = array(
'name' => $file['name'][$key],
'type' => $file['type'][$key],
'tmp_name' => $file['tmp_name'][$key],
'error' => $file['error'][$key],
'size' => $file['size'][$key],
);
$files[$name] = multiple($files[$name], FALSE);
}
}else{
$files[$name] = $file;
}
}
return $files;
}
function multiple(array $_files)
{
$files = array();
foreach($_files as $name=>$file){
if(is_array($file['name'])){
foreach(array_keys($file['name']) as $key){
$files[$name][$key] = array(
'name' => $file['name'][$key],
'type' => $file['type'][$key],
'tmp_name' => $file['tmp_name'][$key],
'error' => $file['error'][$key],
'size' => $file['size'][$key],
);
$files[$name] = multiple($files[$name]);
}
}else{
$files[$name] = $file;
}
}
return $files;
}$file = $_FILES[вложенность1][вложенность2];
for( $q = 0; $q < count(['errors']); $q++)
{
// тут делаем что надо с элементом $q
// $file['name'][$q]
// $file['error'][$q]
// $file['etc'][$q]
}
/**
* Корректирует неадекватную структуру суперглобального массива $_FILES.
* Возвращает рекурсивно упорядоченный массив пришедших файлов.
*
* @param array $input ожидается массив $_FILES
* @return array массив со скорректированной структурой
*/
public function ConvertFilesStructure($input) {
$output = [];
foreach ($input as $key => $file) {
$output[$key] = $this->ConvertFilesStructureRecursive(
$file['name'],
$file['type'],
$file['tmp_name'],
$file['error'],
$file['size']
);
}
return $output;
}
public function ConvertFilesStructureRecursive($name, $type, $tmp_name, $error, $size) {
if (!is_array($name)) {
return [
'name' => $name,
'type' => $type,
'tmp_name' => $tmp_name,
'error' => $error,
'size' => $size,
];
}
$output = [];
foreach ($name as $key => $_crap) {
$output[$key] = $this->ConvertFilesStructureRecursive(
$name[$key],
$type[$key],
$tmp_name[$key],
$error[$key],
$size[$key]
);
}
return $output;
}
Странный $_FILES или «проблема использования синтаксиса массива в полях формы типа файл»