/** * Creacion de un nuevo archivo en la bd y a la vez, se sube el archivo en el servidor. */ public function createAction() { if (!$this->request->isPost()) { return $this->dispatcher->forward(array("controller" => "archivo", "action" => "index")); } try { /*SUBIENDO LOS ARCHIVOS*/ #Verifica si existen archivos para subir date_default_timezone_set('America/Argentina/Rio_Gallegos'); /*$script_tz = date_default_timezone_get(); if (strcmp($script_tz, ini_get('date.timezone'))){ echo 'La zona horaria del script difiere de la zona horaria de la configuracion ini.'; } else { echo 'La zona horaria del script y la zona horaria de la configuración ini coinciden.'; }*/ $archivosFallidos = ""; if ($this->request->hasFiles() == true) { $uploads = $this->request->getUploadedFiles(); $isUploaded = false; #Por cada archivo subido: $nombreCarpeta = 'temp/' . Date('Y_m_d'); if (!file_exists($nombreCarpeta)) { mkdir($nombreCarpeta, 0777, true); } foreach ($uploads as $upload) { #define a “unique” name and a path to where our file must go $nombreArchivo = date('h_i_s') . '_' . strtolower($upload->getname()); $path = $nombreCarpeta . '/' . $nombreArchivo; #move the file and simultaneously check if everything was ok $upload->moveTo($path) ? $isUploaded = true : ($isUploaded = false); //=========== Creando un registro en la bd ==================== if ($isUploaded) { $archivo = new Archivo(); $archivo->setArchivoCarpeta($nombreCarpeta); $archivo->setArchivoNombre($nombreArchivo); $archivo->setArchivoFechacreacion(Date('Y_m_d')); if (!$archivo->save()) { foreach ($archivo->getMessages() as $message) { $this->flash->error($message); } return $this->dispatcher->forward(array("controller" => "archivo", "action" => "new")); } } else { $archivosFallidos .= "{$nombreArchivo} <br>"; } } #if any file couldn’t be moved, then throw an message if ($isUploaded) { $this->flash->success('Los archivos han sido cargado correctamente'); } else { $this->flash->error('Ha ocurrido un error, los siguientes archivos no se han podido subir: <br>' . $archivosFallidos); } return $this->dispatcher->forward(array("controller" => "archivo", "action" => "index")); } else { #if no files were sent, throw a message warning user //FIXME: Tamaño de archivos $this->flash->error('Operación Fallida, verifique que el tamaño de los archivos no superen los 47185920 bytes Ver EQUIVALENCIAS!!)'); $this->redireccionar('archivo/new'); } /*FIN:SUBIENDO LOS ARCHIVOS*/ } catch (Exception $e) { $this->flash->error('El Archivo excede el tamaño <br> Datos Tecnicos: <br>' . $e->getMessage()); } }