web-dev-qa-db-fra.com

Téléchargement de fichier en utilisant JInput! possible?

j'utilise un formulaire html sur l'un de mes articles, je réussis à obtenir les valeurs du formulaire à l'aide de JInput!

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

Mais maintenant, je dois ajouter une entrée pload de fichier au formulaire:

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

Comment télécharger et sauvegarder des fichiers sur le serveur en utilisant JInput !?

Téléchargement de fichier avec restrictions, n'autorisant que des extensions de fichier spécifiques.

6
saibbyweb

En plus de la réponse de @ Bakual, ​​supposons un formulaire simple comme celui-ci:

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

Pour télécharger le fichier une fois que le bouton d'envoi a été pressé, vous pouvez utiliser ceci:

$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!
}

Vous devrez évidemment changer le chemin ($dest) à tout ce qui vous convient.

Il y a un tas de validations à effectuer lors du traitement des téléchargements, vous en trouverez beaucoup sur le lien qui vous a déjà été fourni:

http://docs.joomla.org/How_to_use_the_filesystem_package

16
Lodder

Il y a deux choses délicates que les gens tombent généralement quand il s'agit de télécharger des fichiers avec JInput:

  • Votre balise de formulaire doit contenir enctype="multipart/form-data"
  • Le tableau de fichiers est récupéré avec $input->files->get('upload');
7
Bakual