Hola,
estoy haciendo un múltiple upload y estoy usando jquery para crear otro input cada vez q se quiera cargar otro archivo.
El problema es q si genero campos y no le cargo ningun archivo, no me sigue recorriendo el array.
Por ejemplo, de esta forma sube perfectamente los archivos, siempre y cuando se carguen todos los campos:
Pero de esta forma no me sigue recorriendo el array y se corta, ya q el primero tiene el name vacio:
Código PHP:
$files = $this->__upload($this->request->data['User']['files']);
private function __upload($files = array()){
$valid_formats = array('jpeg', 'jpg', 'png', 'gif', 'pdf');
$max_file_size = 2097152;
$saveFiles = array();
//Recorro files
foreach ($files as $i => $file) {
//Verifico que no venga vacío el name
if(!empty($file['name'])){
//Tamaño de archivos
$maxFileSize = $file['size'];
if($maxFileSize == 0 or $maxFileSize > $max_file_size){
$this->Session->setFlash(__('El tamaño del archivo no debe ser mayor a 2 Mb'));
$this->redirect($this->referer());
}else{
//Obtengo extension de los archivos
$type_archive = explode('/', $file['type']);
//Si la extension es permitida, subo archivo
if(!in_array($type_archive[1], $valid_formats)){
$this->Session->setFlash(__('Extensión de archivo no válida'));
$this->redirect($this->referer());
}else{
//Subo archivo
if ($filename){
$saveFiles[] = $filename;
}
//Name de archivos se guardan serializados
$files = serialize($saveFiles);
}
}
}else{
//Si no hay archivos, se inserta vacío en base de datos
$files = '';
}
}
return $files;
}
Entonces mi consulta es, como puedo ignorar esos indices q vienen vacios para q no afecte a los demas y siga ejecutandose la funcion __upload()?
En q le estoy errando?
Gracias