Fonction d'upload d'un fichier avec filtre sur le type (extension) de fichier

Contenu du snippet

Ce bout de code permet de gérer l'upload d'un fichier et permet de filtrer les fichiers à charger suivant leurs extensions.

Source / Exemple :


<?php

/**********************************************************************************

  • FONCTION D'UPLOAD D'UN FICHIER
  • Vous devez obligatoirement nommer le champ INPUT de type FILE <<fichier>>
  • $uploaddir STRING VARIABLE le dossier de destination finale du fichier téléchargé
  • $prefix STRING VARIABLE comment préfixé le fichier chargé
  • $adresseFichierFinal STRING VARIABLE GLOBALE l'adresse relative du fichier sur le serveur
  • @access PUBLIC $adresseFichierFinal
  • @author Amen AMOUZOU, amouzou_amen@yahoo.fr
  • @TODO Filtre sur les fichiers accepté; on pourra refuser ainsi certain type de fichier
                                                                                                                                                                    • /
function upload($uploaddir,$prefix = ""){ GLOBAL $adresseFichierFinal, $nomFichierFinal; Switch($_FILES['fichier']['error']){ case 0: //echo "Le téléchargement est correct vers le dossier temporaire du serveur"; $adresseFichierFinal = $uploaddir.$prefix.$_FILES['fichier']['name']; //On pourra récupérer cette variable et le stocker dans une BD $nomFichierFinal = $prefix.$_FILES['fichier']['name']; //idem //Vérifions que le dossier $uploaddir existe sinon on le crée if (!is_dir($uploaddir)) { if (!@mkdir($uploaddir)) { echo "Erreur lors de la création du dossier 'docs'"; } } //Permettons l'accès complet sur ce dossier: lecture, écriture et suppression @chmod($uploaddir,0777); //Déplaçons le fichier dans le dossier $uploaddir if (move_uploaded_file($_FILES['fichier']['tmp_name'], $adresseFichierFinal)) { // echo " et le fichier a été correctement déplacé ensuite vers le dossier <b>$uploaddir</b>. Adresse complète : $adresseFichierFinal\n"; //print('<PRE>'); // print_r($_FILES); // print('</PRE>'); } else { echo "<br>\nAttaque par upload potentielle. Voici plus d'informations :\n<PRE>"; print_r($_FILES); print("</PRE>"); } break; case 1: echo "Le fichier exède la taille autorisée dans le fichier php.ini du serveur"; break; case 2: echo "Le fichier exède la taille MAX_FILE_SIZE spécifié dans le formulaire"; break; case 3: echo "Le fichier n'a été que partiellement téléchargé"; break; case 4: echo "Aucun fichier n'a été téléchargé."; break; } } /**********************************************
  • Fin de la fonction
                                                                                            • /
?>

Conclusion :


//Un exemple de l'appel de la fonction
if ((isset($_POST["envoi"])) && ($_POST["envoi"] == "form1")) {
$prefix = time()."_"; //Nous pouvons décider de préfixer le nom du fichier par le timestamp. Pour eviter les écrasement de fichjier de même nom
$dossierDestination = "../images/categories/";
upload($dossierDestination,$prefix);
}

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.