|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
CLASSE PHP5 D'UPLOAD / REDIMENSIONNEMENT D'IMAGE GD
Information sur la source
Description
Je me suis fais cette classe vite fait, et je l'ai trouvé bien pratique alors je la fais tourner. Elle permet d'uploader très facilement des fichiers, et si c'est des images, de les redimensionner à la volée en conservant les proportions.
Source
- <?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
-
-
- ?>
<?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
?>
Conclusion
Je sais, ce n'est pas très bien commenté, mais normalement ça l'est suffisament ! J'ai également une version prenant en charge la librairie imagick, si ça intéresse quelqu'un, écrivez-moi !
Fichier Zip
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
Télécharger le zip
Sources du même auteur
Sources de la même categorie
SURCHARGE PHP, ARRAYLIST PHP, ARRAYMAP PHP, DEBOGAGE, DBMANAGER, DESSIN PHP, ETC... (PHP 5)Implémentation de :
- Surcharge de méthodes (grâce à un simple héritage)
- Arraylist et Arraymap avec Itérateur (+ une interface list et map pour ... SURCHARGE PHP, ARRAYLIST PHP, ARRAYMAP PHP, DEBOGAGE, DBMANA...
par DijxDreaM
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
générer des miniatures avec gd 1.6 [ par vegetaline ]
muhaha alors là c'est rigolo, un super défi pour les programmeurs fous!ok j'ai le code pour générer des miniatures grâce au php, mais ça marche qu'ave
upload dans table [ par eax ]
salut!je voudrais savoir s'il est possible d'uploader un fichier (une image par exemple) et le stocker dans un champ d'une base de données mysqlje vou
Upload d'Image et resize de cette image [ par 4feeling ]
je cherche un petit bout de script qui permettrai d'uploader une image jpeg et l'enregistrer dans une taille précise. Par exemple on uploade, et on en
Upload image et limitation taille [ par millo ]
Je suis entrain de dévellopé un script ou je propose l'upload de photo mais pour des raisons évidentes je souhaite limiter l'espace disque réservé pou
upload d'image [ par guikiki ]
Bonjour à tous!!!voilà..encore un problème que je n'ai toujours pas réussit à résoudre et ce n'est pas faute d'essayer!!voilà, j'ai fait une page en i
upload d'images [ par G_ki_aime_pas_le_php ]
Salut à tous!G un petit problème j'essaie d'uploader un fichier et ça fonctionne pas.G TOUT essayé j'en ai marre!Est ce que quelqu'un aurait la soluti
afficher les image d'un repertoir et un sous repertoir + upload [ par angelx ]
bonjour je voudrais afficher les image d'un reperoire et SOUS Repertoire + faire un uploade sans donner le chemin de l'image en utilisant les image ge
Upload image .. j'ai cherché mais je ne comprends pas .. :S [ par Hash2o ]
Voila, je suis a la recherche d'une solution pour uploader une image sur un serv. J'ai essayé la plus part des solutions proposer sur le site mais je
lycos et library GD [ par bobbycoul ]
bonjour,j'ai un compte gratuit sur lycos (multimania), et la library GD (la version 2 est installé sur leur serveurs) foire jexplique:qd je créé une i
Upload :) [ par GuilleW ]
Bonjour bonjour,Je souhaite faire un Upload de fichier.pour cela j'ai un image , et je souhaiterai que lorsque l'on click sur cette image, elle lance
|
Téléchargements
Logiciels à télécharger sur le même thème :
|