subirArchivoFormulario('rutaArchivo', $documento, CONSTANTE_TAMANO_FICHERO, CONSTANTE_EXTENSIONES_PERMITIDAS); } else { //si el archivo es obligatorio y es $nuevo lanzariamos una excepción } - En la vista
rutaArchivo) { ?>
[...] */ trait UploadFileTrait { protected static function baseUrl() { $ci = &get_instance(); $idiomas = $ci->lang->getIdiomas(); if (count($idiomas) > 1) { return base_url() . getCodigoIdioma() . '/'; } return base_url(); } // Funciones del modelo public function borrarDocumentoFisico($nombreCampo) { if (!empty($this->{$nombreCampo})) { $directorio = $this->getRutaDirectorio(); borrarArchivo($directorio . $this->{$nombreCampo}); borrarDirectorio($directorio); } } public function getRutaArchivo($nombreCampo) { $directorio = $this->getRutaDirectorio(); return $directorio . $this->{$nombreCampo}; } public function getRutaDirectorio() { $carpeta = strtolower(substr(get_class($this), 0, -5)); return RUTA_DATA . $carpeta . '/' . $this->id . '/'; } public function enlaceVerDocumento() { return static::baseUrl() . $this->getControlador() . 'Back/verDocumento/' . $this->codigo . '/' . $this->getTabla(); } public function enlaceDescargarDocumento() { return static::baseUrl() . $this->getControlador() . 'Back/descargarDocumento/' . $this->codigo . '/' . $this->getTabla(); } public function getEnlaceParaFront() { return static::baseUrl() . $this->getControlador() . 'Front/descarga/' . $this->codigo; } // Funciones del controlador public function subirArchivoFormulario($nombreCampo, $objeto, $tamanoMax = DEFAULT_MAX_UPLOAD_TRAIT, $extensiones = DEFAULT_EXTENSIONES_TRAIT) { if (isset($_FILES[$nombreCampo]) && $_FILES[$nombreCampo]['error'] === 0) { $datos = validaUploadedFile($nombreCampo, false); $rutaArchivoTemporal = $datos['rutaTemporal']; $nuevoNombreArchivo = $datos['nombreArchivo']; if ($_FILES[$nombreCampo]['size'] >= ($tamanoMax * 1024 * 1024)) { throw new Exception(lang('dc_errorTamano', $tamanoMax)); } $extension = pathinfo($_FILES[$nombreCampo]['name'], PATHINFO_EXTENSION); $extensionesPermitidas = explode(",", $extensiones); if (!in_array($extension, $extensionesPermitidas)) { throw new Exception(lang('dc_errorExtension', implode(", ", $extensionesPermitidas))); } $rutaTemporal = $objeto->getRutaDirectorio(); if (!file_exists($rutaTemporal)) { crearDirectorio($rutaTemporal); } $adjunto = $rutaTemporal . $nuevoNombreArchivo; if (!@move_uploaded_file($rutaArchivoTemporal, $adjunto)) { throw new Exception(lang('dc_operacionKo')); } $objeto->{$nombreCampo} = $nuevoNombreArchivo; $objeto->save(); } } public function verDocumento($codigoObjeto, $tabla) { try { $this->startTransaction(); $model = ucfirst($tabla) . 'Model'; $objeto = $model::getItemByCodigo($codigoObjeto); if (empty($objeto)) { throw new NotFoundException(lang('dc_errorNoEncontrado')); } DC_File::abrirArchivo($objeto->getRutaArchivo('rutaArchivo')); $this->commitTransaction(); } catch (Exception $e) { $this->manejarExcepcion($e); } } public function descargarDocumento($codigoObjeto, $tabla) { try { $this->startTransaction(); $model = ucfirst($tabla) . 'Model'; $objeto = $model::getItemByCodigo($codigoObjeto); if (empty($objeto)) { throw new NotFoundException(lang('dc_errorNoEncontrado')); } DC_File::descargarArchivo($objeto->getRutaArchivo('rutaArchivo')); $this->commitTransaction(); } catch (Exception $e) { $this->manejarExcepcion($e); } } }