it-swarm-es.tech

Carga de archivos usando JInput! ¿posible?

uso un formulario html en uno de mis artículos, ¡tengo éxito en obtener los valores del formulario usando JInput!

$input = JFactory::getApplication()->input;

Pero ahora necesito agregar una entrada carga de archivo al formulario:

<input type="file" name="upload">

¿Cómo cargar y guardar archivos en el servidor usando JInput?

Carga de archivos con restricciones, permitiendo solo extensiones de archivo específicas.

6
saibbyweb

Además de la respuesta de @ Bakual, ​​supongamos que tiene una forma simple como esta:

<form name="upload" method="post" enctype="multipart/form-data">
    <input type="file" name="file_upload">
</form>

Para cargar el archivo una vez que se ha presionado el botón Enviar, puede usar esto:

$input = JFactory::getApplication()->input;
$file  = $input->files->get('file_upload'); 

// Cleans the name of teh file by removing weird characters
$filename = JFile::makeSafe($file['name']); 

$src  = $file['tmp_name'];
$dest = JPATH_BASE . '/modules/mod_mymodule/' . $filename;

if (JFile::upload($src, $dest)) 
{
      // The file has successfully been uploaded :)
} 
else 
{
      // Oh crap, something happened. Run!
}

Obviamente necesitará cambiar la ruta ($dest) a lo que se adapte a sus necesidades.

Hay una gran cantidad de validaciones que debe realizar al manejar cargas, muchas de las cuales se pueden encontrar en el enlace que ya recibió:

http://docs.joomla.org/How_to_use_the_filesystem_package

16
Lodder

Hay dos cosas difíciles que la gente suele caer cuando se trata de cargar archivos usando JInput:

  • Su etiqueta de formulario debe contener enctype="multipart/form-data"
  • La matriz de archivos se recupera con $input->files->get('upload');
7
Bakual