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'] != 4 && $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'] == 1 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