Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/04/2014, 09:00
Avatar de reborn
reborn
 
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Upload múltiple: si un archivo supera el tamaño, no subir ninguno

Hola,

estoy haciendo un upload multiple y me di cuenta del error q estoy teniendo.

Por ejemplo, subo 3 archivos y uno de esos archivos supera el tamaño permitido y no se guarda nada en base de datos, pero sí me guarda los otros 2 archivos en el directorio.

Como puedo evitar eso?

Código PHP:
    public function upload($files){

        
//Extensiones de archivos permitidas
        
$valid_formats = array('jpeg''jpg''png''gif''pdf''rar''zip');
        
$max_file_size 2097152// 2 Mb

        
$saveFiles = array();
        
$filesOk '';

//        //Recorro files
        
foreach ($files as $i => $file) {

            
//Verifico que no venga vacío el name (si no existe name, tampoco existe archivo)
            
if($file['error'] != && $file['name'] != ''){
               
                
//Error = 1: Tamaño de archivo excede al valor seteado en php.ini
                //$max_file_size, tamaño máximo permitido seteado en bootstrap
                
if($file['error'] == or $file['size'] > $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 extensión es permitida, guardo archivo en directorio
                    //de lo contrario, envío mensaje de error
                    
if(!in_array($type_archive[1], $valid_formats)){
                        
$this->Session->setFlash(__('Extensión de archivo no válida'));
                        
$this->redirect($this->referer());                            
                    }else{
//                        $filename = $this->Ticket->uploadFile($file);

                        /* Subo el archivo al directorio */
                        
                        
if ($filename){
                            
$saveFiles[] = $filename;
                        }
                            
//Names se guardan serializados
                            
$filesOk serialize($saveFiles);
                    }
                }               
            }
        }
        
        return 
$filesOk;
    } 
Gracias