Soyez le premier à donner votre avis sur cette source.
Vue 26 562 fois - Téléchargée 1 516 fois
<?php // // Upload Class (janvier 2005) // Nordine Ghachi // from TanukiDesign // http://www.tanukidesign.com // class Upload { private $uploadedFileName ; private $uploadedFile ; private $uploadedFileSize ; private $uploadedFileType ; public function __construct(){ // constructeur // je préfère définir mes paramètres d'upload dans la méthode doUpload() // comme ça je peux construire mon objet Upload() avant même de recevoir un fichier d'un formulaire // et balancer l'upload quand je veux avec cette méthode } // Méthode doUpload() // 1er paramètre : nom du champs file du formulaire ; // 2ème : chemin de destination sur le serveur ; // 3ème : nouveau nom de fichier SANS EXTENSION car on prend celle du fichier d'origine (facultatif) ; // 4ème : côté maxi de l'image (90px par défaut) ; // 5ème : type attendu (défault : n'importe quel type) ; public function doUpload($file_form_name,$uploadPath=".",$newname="",$sizemax=90,$constraint=""){ // si l'on a pas donné un nouveau nom au fichier, il garde le nom d'origine if ($newname=="") { $this->uploadedFileName = $_FILES[$file_form_name]["name"] ; } else { $extent = pathinfo($_FILES[$file_form_name]["name"]) ; $extent = $extent["extension"] ; $this->uploadedFileName = $newname.".$extent" ; } // récupération du nom temporaire sur le serveur, de la taille du fichier et de son type $this->uploadedFile = $_FILES[$file_form_name]["tmp_name"]; $this->uploadedFileSize = $_FILES[$file_form_name]["size"]; $this->uploadedFileType = $_FILES[$file_form_name]["type"]; //on commence par verifier que le dossier d'upload existe if (file_exists($uploadPath)) { //on verifie que le fichier soit bien uploader pour des questions de securite if (is_uploaded_file($this->uploadedFile)) { if (!file_exists($uploadPath.$this->uploadedFileName)) { // on vérifie que le fichier n'existe pas déja (sinon, on lui concatène un 1) //on appelle la fonction d'upload $this->uploadFile($this->uploadedFile, $this->uploadedFileName, $uploadPath, $newname, $sizemax, $this->uploadedFileType, $constraint); //pour activer la modification des permissions enlever les deux // devant la ligne suivante //chmod ("$uploadPath$uploadedFileName", $permission); }else{ $this->uploadedFileName="1".$this->uploadedFileName; $this->uploadFile($this->uploadedFile, $this->uploadedFileName, $uploadPath, $newname, $sizemax, $this->uploadedFileType, $constraint); } } }else{ print "Erreur: le dossier $uploadPath n'existe pas"; } } //fonction pour l'upload des fichier, on utilise la fonction copy et on modifie les noms private function uploadFile($file, $name, $directory, $newname, $sizemax, $type,$constraint) { copy($file, $directory.$name) or die ("Impossible d'uploader le fichier"); $fullpath = $directory.$this->uploadedFileName ; // chemin complet de l'image sur le serveur // Si c'est un fichier image, on vérifie que c'est bien un fichier image (type MIME) if ($constraint=="image") { if ($type!="image/jpeg" && $type!="image/png" && $type!="image/gif") { @unlink($fullpath); echo '<script>alert("Ce n\'est pas un fichier image !");</script>' ; } } // redimensionnement si c'est un thumb (avatar par exemple) if ($constraint=="thumb") { switch($type){ case "image/jpeg": $function_image_create = "ImageCreateFromJpeg"; $function_image_new = "ImageJpeg"; break; case "image/png": $function_image_create = "ImageCreateFromPng"; $function_image_new = "ImagePNG"; break; case "image/gif": $function_image_create = "ImageCreateFromGif"; $function_image_new = "ImageGif"; break; default: @unlink($fullpath); if ($newname=="avatar") { echo '<script>alert("Votre avatar n\'est pas un fichier image, vous aurez donc l\'avatar par défaut !\n Vous pouvez toutefois le modifier dans votre profil.");</script>' ; } else { echo '<script>alert("Ce n\'est pas un fichier image !");</script>' ; } exit; break; } list($width, $height) = getimagesize($fullpath); // on récupère les dimensions de l'image // si l'un des côté est supérieur à $sizemax, on redimensionne en conservant les proportions if ($width>$sizemax || $height>$sizemax) { $ratio = $height/$width; $newheight = ($height > $width) ? $sizemax : $sizemax*$ratio; $newwidth = $newheight/$ratio; $thumb = ImageCreateTrueColor($newwidth,$newheight); $source = @$function_image_create($fullpath); ImageCopyResampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); @$function_image_new($thumb,$fullpath); } } } public function getName() { return $this->uploadedFileName; } }// fin de la classe ?>
Par contre sous d'autres browsers, ca marche sans probleme. Pourriez-vous me dire comment remedier a cette situation?
peut on modifier le code pour convertir les images png, gif en jpg avant l'upload. merci.
$_valide_ext = array('gif', 'jpg', 'jpeg', 'png', 'swf', 'swc', 'psd', 'tiff', 'bmp',
'iff', 'jp2', 'jpx', 'jb2', 'jpc', 'xbm', 'wbmp', 'doc', 'txt', 'rtf', 'pdf', 'xls', 'rar', 'tar', 'zip', 'tgz', 'gz');
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.