Snippet PHP : Uploader une image en provenance d’un formulaire

Exemple d’une fonction permettant de gérer l’upload d’une image en provenance d’un formulaire. Permet de la renommer et de la placer dans le répertoire voulus en fonctions des paramètres passés. Attention ici on contrôle uniquement le fait que ce soit une image, si on à des contraintes sur la taille du fichier ou les extensions autorisées il faudra rajouter des vérifications.

Comme pour le snippet précédent on imagine cette fonction dans une class « Misc » qui pourrait contenir d’autre fonctions utilitaires variées.

class Misc {
    /**
     * uploade le fichier image en provenance du input "file" ayant pour nom $fieldName et donne le nom $imgName à l'image
     * retourne le nouveau dossier/nom.ext de l'image si upload ok, sinon false
     */

    public static function uploadImg($fieldName, $imgName, $target_dir = "../images/") {
        if (isset($_FILES[$fieldName]) && $_FILES[$fieldName]["name"] != "") {
            $ext = pathinfo($_FILES[$fieldName]["name"], PATHINFO_EXTENSION);
            $target_file = $target_dir . $imgName . '.' . $ext;
            //contrôle si c'est bien une image
            $check = getimagesize($_FILES[$fieldName]["tmp_name"]);
            if ($check !== false) {
                if (move_uploaded_file($_FILES[$fieldName]["tmp_name"], $target_file)) {
                    return $target_file;
                }
            }
        }
        return false;
    }
}

Utilisation (après l’envoi d’un formulaire ayant un input de type « file » ayant pour attribut « name » la valeur « logo ») :

Misc::uploadImg('logo', 'logo');//retourne le nouveau chemin et nom de l'image uploadé (ex : "../images/logo.png") ou false en cas d'erreur.

Une réflexion sur « Snippet PHP : Uploader une image en provenance d’un formulaire »

  1. Ping : jQuery : soumettre un formulaire contenant des fichiers grâce à FormData - Pense bête d'un développeur web

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.