Множественное добавление файлов PHP

Добрый вечер

Недавно столкнулся с задачей загрузки на сервер файлов ,ситуация довольно типичная и шаблонная ,сложностей как правильно не вызывает ,но небольшая загвоздка заключалась в том что загружать нужно сразу несколько файлов.

Форма HTML5:

<br />
&lt;form action=&quot;/add/&quot; enctype=&quot;multipart/form-data&quot; method=&quot;post&quot;&gt;<br />
  &lt;input type=&quot;file&quot; min=&quot;1&quot; max=&quot;20&quot; name=&quot;files[]&quot; multiple=&quot;true&quot;/&gt;<br />
  &lt;button type=&quot;submit&quot;&gt;Добавить&lt;/button&gt;<br />
&lt;/form&gt;<br />

Выход простой ,единственно что не совсем удобно это при множественном добавлении файлов (multiple) массив
$_FILES предстает в виде:
$_FILES[‘file’][‘name’][0] — где 0 номер файла ,гораздо удобнее
$_FILES[‘file0’][‘name’] — где 0 номер файла

Для этого набросал небольшую функцию:

<br />
function multiple($file ,$name='files') {<br />
		$files=array();<br />
		$data=$file[$name];</p>
<p>		if(is_array($data['name'])){<br />
			for($i=0;$i&lt;count($data['name']);$i++){<br />
				$files[$name.$i]=array(<br />
							'name'    =&gt;$data['name'][$i],<br />
							'type'  =&gt; $data['type'][$i],<br />
							'tmp_name'=&gt;$data['tmp_name'][$i],<br />
							'error' =&gt; $data['error'][$i],<br />
							'size'  =&gt; $data['size'][$i]<br />
							  );<br />
			}<br />
		} else {<br />
		$files[]=$data;<br />
		}</p>
<p>		return $files;<br />
}<br />

Применение:

<br />
$files=multiple($_FILES,'files');</p>
<p>// Дальше действия над массив $files<br />
foreach ($files as $file) {<br />
   // работа над одним файлом<br />
}<br />

Спасибо за внимание =)

Вам также может понравиться ...