Subir ficheros al servidor con el API de Joomla!

Vamos a ver como subir un fichero al servidor usando el API de Joomla!.

La ventaja de usar el API de Joomla! es que internamente comprueba si se esta usando la capa FTP y si esta configurada se usará para subir el fichero.

Primero creamos una vista donde mostraremos un formulario con un input de tipo “file”. El formulario ha de tener enctype=»multipart/form-data» como atributo, de lo contrario, apache no sabrá interpretar los datos recogidos en la variable post como ficheros. El enctype multipart/form-data especifica que vamos a poder enviar tanto texto como ficheros.

Código de la vista

Introduce el fichero :

La vista es enviada a un task, en este caso el task se llama subirFichero, así que creamos un método en el controlador con este nombre e introducimos el siguiente código :
(Si no entiendes lo que es un task, vista, etc… hay un tutorial bastante extenso sobre componentes donde se explica)

Código del task

$file = JRequest::getVar( 'fichero', null, 'files', 'array' );

jimport('joomla.filesystem.file');

        if(!is_array($file)){
        	$mensaje .= "NoSeHaSubido";
         }
         if($file['error'] || $file['size'] < 1 ){
			$mensaje .= " NoExisteFichero";
        }
         if( $file['size'] > 100  ){
         	$mensaje .=" FicheroDemasiadoGrande";
             }

        if(!JFile::upload($file['tmp_name'],"/directorioLocal".DS. $file['name'])){ 

			$mensaje .= " ErrorAlSubirElFichero";
        }

En la primera línea obtenemos el fichero de la petición proveniente del formulario. Investiga más sobre los métodos de JRequest , te será muy útil!!.

La segunda línea sirve para importar el objeto JFile que usaremos para introducir el fichero en nuestro sistema de ficheros local.

Por último llevamos a cabo algunas comprobaciones para ver si el fichero es demasiado grande ,demasiado pequeño o si no se ha subido ningún fichero y vamos guardando en una variable el mensaje de error correspondiente, para que después solo haya que invocar el método upload del objeto JFile al cual le pasamos como primer parámetro el fichero temporal que aún se encuentra en la petición y como segundo parámetro la ruta completa en el disco local (incluyendo el nombre del fichero) donde queremos guardar el fichero.

Ya debería de estar fichero correctamente subido en el disco duro del servidor 😉

Compartir:
Abrir chat
¿Tienes alguna duda que podamos aclarar?