Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Cakephp Upload de archivos: Cómo "ignorar" un índice vacío de un array?

Estas en el tema de Upload de archivos: Cómo "ignorar" un índice vacío de un array? en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 11/04/2014, 07:10
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Upload de archivos: Cómo "ignorar" un índice vacío de un array?

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 == 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
  #2 (permalink)  
Antiguo 11/04/2014, 09:19
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Upload de archivos: Cómo "ignorar" un índice vacío de un array?

Lee el manual al respecto: http://php.net/manual/es/features.file-upload.php

Ahí se explica que existe un índice llamado "error" el cual indica incluso si se ha seleccionado un archivo o no.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 11/04/2014, 09:31
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Upload de archivos: Cómo "ignorar" un índice vacío de un array?

Si, era tan sencillo...

Modifique esta linea:
Código PHP:
Ver original
  1. if(!empty($file['name'])){ ....

Por esta otra:
Código PHP:
Ver original
  1. if($file['error'] != 4 && $file['name'] != ''){

Gracias

Etiquetas: cakephp, ignorar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:14.