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 !

UPLOAD MULTIPLE IMAGE GIF/JPG/PNG AVEC ROTATION, MINIATURE GARDANT LES PROPORTIONS ET AJOUT D'UN COPYRIGHT


Information sur la source

Catégorie :Divers Classé sous : upload, redimension, multiple, rotation, image Niveau : Débutant Date de création : 16/05/2007 Date de mise à jour : 19/04/2009 13:05:08 Vu / téléchargé: 21 201 / 2 277

Note :
9,22 / 10 - par 18 personnes
9,22 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (53)
Ajouter un commentaire et/ou une note

Description

Alors voilà,

Maintenant que j'ai assez profité de toutes les astuces que fournis ce site, je me suis dit que je pouvais essayer d'aider les autres.

J'ai cherché pendant longtemps un upload bien expliqué, et pour finir je me le suis fait moi-même ;) en cherchant sur le site de php.net. De plus j'ai aussi fait en sorte qu'il redimensionne direct l'image comme désiré.

Dans le zip il y a 2 fichiers d'upload un permettant une miniature qui garde les proportions de l'originale et l'autre qui crée une miniature aux dimension données, déformant l'original.
J'y ai maintenant rajouté un fichier avec formulaire su rla page .php qui permet d'uploader plusieurs fichiers en une fois :D

Etant un programmeur amateur, je vous demanderai de bien vouloir être indulgents.
 

Source

  • index.php :
  • -----------
  • <html>
  • <head>
  • <title>Upload</title>
  • </head>
  • <body>
  • <form method="post" action="upload.php" enctype="multipart/form-data">
  • <?php
  • $nbr_champs = 10;
  • for($nbr=0;$nbr<$nbr_champs;$nbr++){
  • ?>
  • <?php echo $nbr; ?>. <input type="file" name="fichier_upload_<?php echo $nbr; ?>" id="fichier_upload_<?php echo $nbr; ?>"><br />
  • <select name="fichier_rotation_<?php echo $nbr; ?>">
  • <option>Pas de rotation</option>
  • <option value="90">90&deg; gauche</option>
  • <option value="270">90&deg; droite</option>
  • <option value="180">180&deg;</option>
  • </select>
  • <br />
  • <?php
  • }
  • ?>
  • <input type="submit" name="Submit" value="Uploader">
  • <input name="nbr_f" type="hidden" value="<?php echo $nbr_champs; ?>">
  • </form>
  • </body>
  • </html>
  • upload.php :
  • ---------------------------------------
  • <?php
  • // nombre de fichiers à uploader
  • $nbr_fichiers = $_POST['nbr_f'];
  • // boucle permettant d'uploader les fichiers un à un
  • for($nbr=0;$nbr<$nbr_fichiers;$nbr++){
  • // on récupère les infos du fichier à uploader
  • $fichier_temp = $_FILES['fichier_upload_'.$nbr]['tmp_name'];
  • $fichier_nom = $_FILES['fichier_upload_'.$nbr]['name'];
  • // on défini les dimensions et le type du fichier
  • list($fichier_larg, $fichier_haut, $fichier_type, $fichier_attr)=getimagesize($fichier_temp);
  • // infos de contrôle du fichier
  • $fichier_poids_max = 500000;
  • $fichier_h_max = 1224;
  • $fichier_l_max = 1632;
  • // gestion du copyright
  • // 0 = pas de copyright
  • // 1 = ajout d'un copyright sur les images uploadées
  • // 2 = ajout d'un copyright sur les images uploadées
  • // mais tout en gardant une copie de l'image originale sans le copy.
  • $copyright = 2;
  • $opacite = 100;
  • // source du logo copyright
  • // ATTENTION si vous voulez utiliser un logo au format .jpg ou .png aucun soucis
  • // il suffit de remplacer imagecreatefromgif par imagecreatefromjpeg ou imagecreatefrompng
  • $copyright_logo = imagecreatefromgif('logo.gif');
  • // dossier de destination
  • $fichier_dossier = 'images/';
  • // extension du fichier
  • $fichier_ext = substr($fichier_nom,strrpos( $fichier_nom, '.')+1);
  • // on renomme le fichier
  • $fichier_date = date("ymdhis");
  • $fichier_n_nom = $nbr."_".$fichier_date.".".$fichier_ext;
  • // on vérifie s'il y a bien un fichier à uploader
  • if (!empty($fichier_temp) && is_uploaded_file($fichier_temp)) {
  • // on vérifie le poids du fichier
  • if (filesize($fichier_temp)<$fichier_poids_max) {
  • // types de fichiers autorises 1=gif / 2=jpg / 3=png
  • if (($fichier_type===1) || ($fichier_type===2) || ($fichier_type===3)) {
  • // on vérifie si l'image n'est pas trop grande
  • if (($fichier_larg<=$fichier_l_max) && ($fichier_haut<=$fichier_h_max)) {
  • // si le fichier est ok, on l'upload sur le serveur
  • if (move_uploaded_file($fichier_temp, $fichier_dossier.$fichier_n_nom)) {
  • // on donne un acces total sur le fichier
  • chmod ($fichier_dossier.$fichier_n_nom, 0777);
  • /******************
  • rotation de l'image
  • ******************/
  • if (!empty($_POST['fichier_rotation_'.$nbr]) && is_numeric($_POST['fichier_rotation_'.$nbr])) {
  • $degre_rotation = $_POST['fichier_rotation_'.$nbr];
  • $image = getimagesize($fichier_dossier.$fichier_n_nom);
  • // création de l'image
  • if($fichier_type == "1") {
  • $source = imagecreatefromgif($fichier_dossier.$fichier_n_nom);
  • }
  • if($fichier_type == "2") {
  • $source = imagecreatefromjpeg($fichier_dossier.$fichier_n_nom);
  • }
  • if($fichier_type == "3") {
  • $source = imagecreatefrompng($fichier_dossier.$fichier_n_nom);
  • }
  • //rotation de l'image
  • $rotation = imagerotate($source,$degre_rotation,1);
  • //Le -1 permet de remplir les zones vides avec du transparent
  • // sauvegarde de l'image finale
  • if($fichier_type == "1") {
  • imagegif($rotation,$fichier_dossier.$fichier_n_nom);
  • }
  • if($fichier_type == "2") {
  • imagejpeg($rotation,$fichier_dossier.$fichier_n_nom);
  • }
  • if($fichier_type == "3") {
  • imagepng($rotation,$fichier_dossier.$fichier_n_nom);
  • }
  • if (($degre_rotation == '90') || ($degre_rotation == '270')) {
  • $n_larg = $fichier_haut;
  • $n_haut = $fichier_larg;
  • $fichier_larg = $n_larg;
  • $fichier_haut = $n_haut;
  • }
  • }
  • /*****************************
  • ajout d'un copyright sur les photos
  • *****************************/
  • if ($copyright == 0) {
  • // pas d'ajout de copyright
  • }
  • elseif ($copyright != 0) {
  • // source de la photo
  • if ($fichier_type===1) {
  • $copyright_photo = imagecreatefromgif($fichier_dossier.$fichier_n_nom);
  • }
  • elseif ($fichier_type===2) {
  • $copyright_photo = imagecreatefromjpeg($fichier_dossier.$fichier_n_nom);
  • }
  • else {
  • $copyright_photo = imagecreatefrompng($fichier_dossier.$fichier_n_nom);
  • }
  • // on récupère les dimensions du logo et de la photo
  • $larg_logo = imagesx($copyright_logo);
  • $haut_logo = imagesy($copyright_logo);
  • $larg_photo = imagesx($copyright_photo);
  • $haut_photo = imagesy($copyright_photo);
  • // on calcule la position du logo, ici en bas à droite
  • $poslogo_x = $larg_photo - ($larg_logo + 5);
  • $poslogo_y = $haut_photo - ($haut_logo + 5);
  • // on colle le logo au dessus de l'image
  • imagecopymerge($copyright_photo, $copyright_logo, $poslogo_x, $poslogo_y, 0, 0, $larg_logo, $haut_logo, $opacite);
  • // si 1, on écrase l'image sans copyright
  • if ($copyright == 1) {
  • if ($fichier_type===1) {
  • imagegif($copyright_photo, $fichier_dossier.$fichier_n_nom);
  • }
  • elseif ($fichier_type===2) {
  • imagejpeg($copyright_photo, $fichier_dossier.$fichier_n_nom);
  • }
  • else {
  • imagepng($copyright_photo, $fichier_dossier.$fichier_n_nom);
  • }
  • }
  • // si 2, on crée une nouvelle image avec le copyright
  • else {
  • if ($fichier_type===1) {
  • imagegif($copyright_photo, $fichier_dossier.'c_'.$fichier_n_nom);
  • }
  • elseif ($fichier_type===2) {
  • imagejpeg($copyright_photo, $fichier_dossier.'c_'.$fichier_n_nom);
  • }
  • else {
  • imagepng($copyright_photo, $fichier_dossier.'c_'.$fichier_n_nom);
  • }
  • }
  • }
  • /********************
  • création de la miniature
  • ********************/
  • // dimension maximale largeur et hauteur comprise
  • $taille_max = 100;
  • // si le fichier est plus grand que $taille_max on le miniaturise
  • if (($fichier_larg > $taille_max) || ($fichier_haut > $taille_max)) {
  • // définition des dimensions
  • if (($fichier_haut > $taille_max) && ($fichier_haut >> $fichier_larg)) {
  • $mini_haut = $fichier_haut / ($fichier_larg / $taille_max);
  • $mini_larg = $taille_max;
  • }
  • else {
  • $mini_haut = $taille_max;
  • $mini_larg = $fichier_larg / ($fichier_haut / $taille_max);
  • }
  • // si le fichier est un .gif
  • if ($fichier_type === 1){
  • // definition de l'image dont on va faire une miniature
  • $fichier_source = imagecreatefromgif($fichier_dossier.$fichier_n_nom);
  • // on prépare le fichier miniature qui accueillera l'image réduite
  • $fichier_reduit = imagecreate($mini_larg, $mini_haut);
  • // fond blanc pour l'image
  • $fond_blanc = imagecolorallocate($fichier_reduit, 255, 255, 255);
  • // dimensions x et y à donner au fichier
  • $fichier_larg_red = imagesx($fichier_reduit);
  • $fichier_haut_red = imagesy($fichier_reduit);
  • // on rajoute un mini_ defant le nom du fichier
  • $nom_fichier_reduit = 'mini_'.$fichier_n_nom;
  • // on redimensionne l'image de base dans le fichier $fichier_reduit
  • imagecopyresampled($fichier_reduit, $fichier_source, 0, 0, 0, 0, $fichier_larg_red, $fichier_haut_red, $fichier_larg, $fichier_haut);
  • // on rend transparent le fond blanc
  • imagecolortransparent($fichier_reduit, $fond_blanc);
  • // crée le fichier réduit définitif
  • imagegif($fichier_reduit, $fichier_dossier.$nom_fichier_reduit);
  • // on donne un acces total sur le fichier
  • chmod($fichier_dossier.$nom_fichier_reduit, 0777);
  • }
  • // si le fichier est un .jpg / .jpeg
  • if ($fichier_type===2){
  • // définition de la qualité
  • $qualite=80;
  • // definition de l'image dont on va faire une miniature
  • $fichier_source = imagecreatefromjpeg($fichier_dossier.$fichier_n_nom);
  • // on prépare le fichier miniature qui accueillera l'image réduite
  • $fichier_reduit = imagecreatetruecolor($mini_larg, $mini_haut);
  • // dimensions x et y à donner au fichier
  • $fichier_larg_red = imagesx($fichier_reduit);
  • $fichier_haut_red = imagesy($fichier_reduit);
  • // on rajoute un mini_ defant le nom du fichier
  • $nom_fichier_reduit = 'mini_'.$fichier_n_nom;
  • // on redimensionne l'image de base dans le fichier $fichier_reduit
  • imagecopyresampled($fichier_reduit, $fichier_source, 0, 0, 0, 0, $fichier_larg_red, $fichier_haut_red, $fichier_larg, $fichier_haut);
  • // crée le fichier réduit définitif
  • imagejpeg($fichier_reduit, $fichier_dossier.$nom_fichier_reduit, $qualite);
  • // on donne un acces total sur le fichier
  • chmod($fichier_dossier.$nom_fichier_reduit, 0777);
  • }
  • // si le fichier est un .png
  • if ($fichier_type===3){
  • // definition de l'image dont on va faire une miniature
  • $fichier_source = imagecreatefrompng($fichier_dossier.$fichier_n_nom);
  • // on prépare le fichier miniature qui accueillera l'image réduite
  • $fichier_reduit = imagecreatetruecolor($mini_larg, $mini_haut);
  • // dimensions x et y à donner au fichier
  • $fichier_larg_red = imagesx($fichier_reduit);
  • $fichier_haut_red = imagesy($fichier_reduit);
  • // on rajoute un mini_ defant le nom du fichier
  • $nom_fichier_reduit = 'mini_'.$fichier_n_nom;
  • // on redimensionne l'image de base dans le fichier $fichier_reduit
  • imagecopyresampled($fichier_reduit, $fichier_source, 0, 0, 0, 0, $fichier_larg_red, $fichier_haut_red, $fichier_larg, $fichier_haut);
  • // crée le fichier réduit définitif
  • imagepng($fichier_reduit, $fichier_dossier.$nom_fichier_reduit);
  • // on donne un acces total sur le fichier
  • chmod($fichier_dossier.$nom_fichier_reduit, 0777);
  • }
  • // si le fichier est plus petit que $taille_max pas besoin de le miniaturiser
  • }
  • else {
  • $nom_fichier_reduit = $fichier_n_nom;
  • }
  • /*************************************
  • enregistrement dans la base de données
  • nom du fichier non réduit :
  • ----------------------------------
  • $fichier_n_nom
  • nom du fichier réduit :
  • ----------------------------------
  • $nom_fichier_reduit
  • *************************************/
  • echo "Le fichier n°".$nbr." a été uploadé avec succès<br />";
  • }
  • else {
  • echo "Le fichier n°".$nbr." n'a pas pu être uploadé<br />";
  • }
  • }
  • else {
  • echo "Le fichier n°".$nbr." est trop grand<br />";
  • }
  • }
  • else {
  • echo "Le fichier n°".$nbr." n'a pas le bon format<br />";
  • }
  • }
  • else {
  • echo "Le fichier n°".$nbr." est trop lourd<br />";
  • }
  • }
  • else {
  • echo "Pas de fichier à uploader dans le champ n°".$nbr."<br />";
  • }
  • }
  • ?>
index.php :
-----------
<html>
<head>
<title>Upload</title>
</head>

<body>
<form method="post" action="upload.php" enctype="multipart/form-data">

<?php
$nbr_champs = 10;
for($nbr=0;$nbr<$nbr_champs;$nbr++){
?>

  <?php echo $nbr; ?>. <input type="file" name="fichier_upload_<?php echo $nbr; ?>" id="fichier_upload_<?php echo $nbr; ?>"><br />
  <select name="fichier_rotation_<?php echo $nbr; ?>">
    <option>Pas de rotation</option>
    <option value="90">90&deg; gauche</option>
    <option value="270">90&deg; droite</option>
    <option value="180">180&deg;</option>
  </select>
  <br />

<?php
}
?>

  <input type="submit" name="Submit" value="Uploader">
  <input name="nbr_f" type="hidden" value="<?php echo $nbr_champs; ?>">
</form>
</body>
</html>


upload.php :
---------------------------------------
<?php
// nombre de fichiers à uploader
$nbr_fichiers = $_POST['nbr_f'];

// boucle permettant d'uploader les fichiers un à un
for($nbr=0;$nbr<$nbr_fichiers;$nbr++){

// on récupère les infos du fichier à uploader
$fichier_temp = $_FILES['fichier_upload_'.$nbr]['tmp_name'];
$fichier_nom = $_FILES['fichier_upload_'.$nbr]['name'];

// on défini les dimensions et le type du fichier
list($fichier_larg, $fichier_haut, $fichier_type, $fichier_attr)=getimagesize($fichier_temp);

// infos de contrôle du fichier
$fichier_poids_max = 500000;
$fichier_h_max = 1224;
$fichier_l_max = 1632;

// gestion du copyright
// 0 = pas de copyright
// 1 = ajout d'un copyright sur les images uploadées
// 2 = ajout d'un copyright sur les images uploadées
//     mais tout en gardant une copie de l'image originale sans le copy.
$copyright = 2;
$opacite = 100;

// source du logo copyright
// ATTENTION si vous voulez utiliser un logo au format .jpg ou .png aucun soucis
// il suffit de remplacer imagecreatefromgif par imagecreatefromjpeg ou imagecreatefrompng
$copyright_logo = imagecreatefromgif('logo.gif');

// dossier de destination
$fichier_dossier = 'images/';

// extension du fichier
$fichier_ext = substr($fichier_nom,strrpos( $fichier_nom, '.')+1);

// on renomme le fichier
$fichier_date = date("ymdhis");
$fichier_n_nom = $nbr."_".$fichier_date.".".$fichier_ext;

	// on vérifie s'il y a bien un fichier à uploader
	if (!empty($fichier_temp) && is_uploaded_file($fichier_temp)) {
	
		// on vérifie le poids du fichier
		if (filesize($fichier_temp)<$fichier_poids_max) {
		
			// types de fichiers autorises 1=gif / 2=jpg / 3=png
			if (($fichier_type===1) || ($fichier_type===2) || ($fichier_type===3)) {
			
				// on vérifie si l'image n'est pas trop grande
				if (($fichier_larg<=$fichier_l_max) && ($fichier_haut<=$fichier_h_max)) {
				
					// si le fichier est ok, on l'upload sur le serveur
					if (move_uploaded_file($fichier_temp, $fichier_dossier.$fichier_n_nom)) {
					
						// on donne un acces total sur le fichier
						chmod ($fichier_dossier.$fichier_n_nom, 0777);
						
							/******************
							rotation de l'image
							******************/							
							
							if (!empty($_POST['fichier_rotation_'.$nbr]) && is_numeric($_POST['fichier_rotation_'.$nbr])) {
							
								$degre_rotation = $_POST['fichier_rotation_'.$nbr];
								
								$image = getimagesize($fichier_dossier.$fichier_n_nom);
								// création de l'image
								if($fichier_type == "1") {
								$source = imagecreatefromgif($fichier_dossier.$fichier_n_nom);
								}
								if($fichier_type == "2") {
								$source = imagecreatefromjpeg($fichier_dossier.$fichier_n_nom);
								}
								if($fichier_type == "3") {
								$source = imagecreatefrompng($fichier_dossier.$fichier_n_nom);
								}
								//rotation de l'image
								$rotation = imagerotate($source,$degre_rotation,1);
								//Le -1 permet de remplir les zones vides avec du transparent
								// sauvegarde de l'image finale
								if($fichier_type == "1") {
								imagegif($rotation,$fichier_dossier.$fichier_n_nom);
								}
								if($fichier_type == "2") {
								imagejpeg($rotation,$fichier_dossier.$fichier_n_nom);
								}
								if($fichier_type == "3") {
								imagepng($rotation,$fichier_dossier.$fichier_n_nom);
								}
								
									if (($degre_rotation == '90') || ($degre_rotation == '270')) {
									
										$n_larg = $fichier_haut;
										$n_haut = $fichier_larg;
										
										$fichier_larg = $n_larg;
										$fichier_haut = $n_haut;
										
									}	
							}
							
							/*****************************
							ajout d'un copyright sur les photos
							*****************************/
							  
							  if ($copyright == 0) {
								// pas d'ajout de copyright
							  }
							  elseif ($copyright != 0) {
								
								// source de la photo
								if ($fichier_type===1) {
								$copyright_photo = imagecreatefromgif($fichier_dossier.$fichier_n_nom);
								}
								elseif ($fichier_type===2) {
								$copyright_photo = imagecreatefromjpeg($fichier_dossier.$fichier_n_nom);
								}
								else {
								$copyright_photo = imagecreatefrompng($fichier_dossier.$fichier_n_nom);
								}
								
								// on récupère les dimensions du logo et de la photo
								$larg_logo = imagesx($copyright_logo);
								$haut_logo = imagesy($copyright_logo);
								$larg_photo = imagesx($copyright_photo);
								$haut_photo = imagesy($copyright_photo);
								
								// on calcule la position du logo, ici en bas à droite
								$poslogo_x = $larg_photo - ($larg_logo + 5);
								$poslogo_y = $haut_photo - ($haut_logo + 5);
								
								// on colle le logo au dessus de l'image
								imagecopymerge($copyright_photo, $copyright_logo, $poslogo_x, $poslogo_y, 0, 0, $larg_logo, $haut_logo, $opacite);
								
									// si 1, on écrase l'image sans copyright
									if ($copyright == 1) { 
										if ($fichier_type===1) {
										imagegif($copyright_photo, $fichier_dossier.$fichier_n_nom);
										}
										elseif ($fichier_type===2) {
										imagejpeg($copyright_photo, $fichier_dossier.$fichier_n_nom);
										}
										else {
										imagepng($copyright_photo, $fichier_dossier.$fichier_n_nom);
										}
									}
									// si 2, on crée une nouvelle image avec le copyright
									else {
										if ($fichier_type===1) {
										imagegif($copyright_photo, $fichier_dossier.'c_'.$fichier_n_nom);
										}
										elseif ($fichier_type===2) {
										imagejpeg($copyright_photo, $fichier_dossier.'c_'.$fichier_n_nom);
										}
										else {
										imagepng($copyright_photo, $fichier_dossier.'c_'.$fichier_n_nom);
										}
									}
							  }
							
							/********************
							création de la miniature
							********************/
							
							// dimension maximale largeur et hauteur comprise
							$taille_max = 100;
							
							// si le fichier est plus grand que $taille_max on le miniaturise
							if (($fichier_larg > $taille_max) || ($fichier_haut > $taille_max)) {
								
								// définition des dimensions 
								if (($fichier_haut > $taille_max) && ($fichier_haut >> $fichier_larg)) {
								
								$mini_haut = $fichier_haut / ($fichier_larg / $taille_max);
								$mini_larg = $taille_max;
								
								}
								
								else {
								
								$mini_haut = $taille_max;
								$mini_larg = $fichier_larg / ($fichier_haut / $taille_max);
								
								}
								
								// si le fichier est un .gif
								if ($fichier_type === 1){
								
								// definition de l'image dont on va faire une miniature
								$fichier_source = imagecreatefromgif($fichier_dossier.$fichier_n_nom);
								
								// on prépare le fichier miniature qui accueillera l'image réduite
								$fichier_reduit = imagecreate($mini_larg, $mini_haut);
								
								// fond blanc pour l'image
								$fond_blanc = imagecolorallocate($fichier_reduit, 255, 255, 255);
								
								// dimensions x et y à donner au fichier
								$fichier_larg_red = imagesx($fichier_reduit);
								$fichier_haut_red = imagesy($fichier_reduit);
								
								// on rajoute un mini_ defant le nom du fichier
								$nom_fichier_reduit = 'mini_'.$fichier_n_nom;
								
								// on redimensionne l'image de base dans le fichier $fichier_reduit
								imagecopyresampled($fichier_reduit, $fichier_source, 0, 0, 0, 0, $fichier_larg_red, $fichier_haut_red, $fichier_larg, $fichier_haut);
								
								// on rend transparent le fond blanc
								imagecolortransparent($fichier_reduit, $fond_blanc);
								
								// crée le fichier réduit définitif
								imagegif($fichier_reduit, $fichier_dossier.$nom_fichier_reduit);
								
								// on donne un acces total sur le fichier
								chmod($fichier_dossier.$nom_fichier_reduit, 0777);
								
								}
								
								// si le fichier est un .jpg / .jpeg
								if ($fichier_type===2){
								
								// définition de la qualité
								$qualite=80;
								
								// definition de l'image dont on va faire une miniature
								$fichier_source = imagecreatefromjpeg($fichier_dossier.$fichier_n_nom);
								
								// on prépare le fichier miniature qui accueillera l'image réduite	
								$fichier_reduit = imagecreatetruecolor($mini_larg, $mini_haut);
								
								// dimensions x et y à donner au fichier
								$fichier_larg_red = imagesx($fichier_reduit);
								$fichier_haut_red = imagesy($fichier_reduit);
								
								// on rajoute un mini_ defant le nom du fichier
								$nom_fichier_reduit = 'mini_'.$fichier_n_nom;
								
								// on redimensionne l'image de base dans le fichier $fichier_reduit
								imagecopyresampled($fichier_reduit, $fichier_source, 0, 0, 0, 0, $fichier_larg_red, $fichier_haut_red, $fichier_larg, $fichier_haut);
								
								// crée le fichier réduit définitif
								imagejpeg($fichier_reduit, $fichier_dossier.$nom_fichier_reduit, $qualite);
								
								// on donne un acces total sur le fichier
								chmod($fichier_dossier.$nom_fichier_reduit, 0777);
								
								}
								
								// si le fichier est un .png
								if ($fichier_type===3){
								
								// definition de l'image dont on va faire une miniature
								$fichier_source = imagecreatefrompng($fichier_dossier.$fichier_n_nom);
								
								// on prépare le fichier miniature qui accueillera l'image réduite
								$fichier_reduit = imagecreatetruecolor($mini_larg, $mini_haut);
								
								// dimensions x et y à donner au fichier
								$fichier_larg_red = imagesx($fichier_reduit);
								$fichier_haut_red = imagesy($fichier_reduit);
								
								// on rajoute un mini_ defant le nom du fichier
								$nom_fichier_reduit = 'mini_'.$fichier_n_nom;
								
								// on redimensionne l'image de base dans le fichier $fichier_reduit
								imagecopyresampled($fichier_reduit, $fichier_source, 0, 0, 0, 0, $fichier_larg_red, $fichier_haut_red, $fichier_larg, $fichier_haut);
								
								// crée le fichier réduit définitif
								imagepng($fichier_reduit, $fichier_dossier.$nom_fichier_reduit);
								
								// on donne un acces total sur le fichier
								chmod($fichier_dossier.$nom_fichier_reduit, 0777);
								
								}
						
							// si le fichier est plus petit que $taille_max pas besoin de le miniaturiser
							}
							else {
							$nom_fichier_reduit = $fichier_n_nom;
							}
								
								/*************************************
								enregistrement dans la base de données
								
								nom du fichier non réduit :
								----------------------------------
								$fichier_n_nom
								
								nom du fichier réduit :
								----------------------------------
								$nom_fichier_reduit
								*************************************/
								
							echo "Le fichier n°".$nbr." a été uploadé avec succès<br />";
					
					}
					else {
						echo "Le fichier n°".$nbr." n'a pas pu être uploadé<br />";
					}
				
				}
				else {
					echo "Le fichier n°".$nbr." est trop grand<br />";
				}
			
			}
			else {
				echo "Le fichier n°".$nbr." n'a pas le bon format<br />";
			}
		
		}
		else {
			echo "Le fichier n°".$nbr." est trop lourd<br />";
		}
	
	}
	else {
		echo "Pas de fichier à uploader dans le champ n°".$nbr."<br />";
	}

}	
?>

Conclusion

J'ai réussi à modifier de façon à pouvoir uploader plusieurs fichiers, comme on dit, quand on cherche on trouve :D

Good bye all, et merci.
 

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

Historique

24 mai 2007 12:10:40 :
Modification du code pour un upload multiple d'images, ainsi que remise à jour du .zip ;)
09 mars 2008 11:38:26 :
Ajout de la possibilité de tourner l'image lors de l'upload, et bien entendu la miniature par la même occasion ;)
19 avril 2009 13:02:42 :
Ajout de la possibilité d'ajouter un copyright (logo) sur chaque image.
19 avril 2009 13:05:08 :
Ajout de la possibilité d'ajouter un copyright (logo) sur chaque image.

Commentaires et avis

signaler à un administrateur
Commentaire de bluedemon le 16/05/2007 19:27:27

Pas mal, au moins je n'ai pas le miens a mettre lol, on me l'avait demandé mais pas eu le temps :-s.

signaler à un administrateur
Commentaire de lordbdp le 25/05/2007 22:31:11

Dés que j'aurais un mpoment je testerai mais cela semble très prometteur ;o)

Bravo !

signaler à un administrateur
Commentaire de Sokaardotbe le 31/05/2007 00:55:27

Félicitation pour le script, je viens de le tester et il fonctionne très bien :)

signaler à un administrateur
Commentaire de D1stort1on le 06/06/2007 22:53:03

Je ne sais pas qui peut noter les sources, mais ca fait vraiment pitié de voir qu'on mette 1 et qu'on ne soit pas capable de justifier, si un travail fourni aux autres, sans prétention mais qui aide les gens c'est déja bien. Au moins nous dire ce qui cloche et qui mérite une note pareille...

En tout cas c drôlement petit.

signaler à un administrateur
Commentaire de fedebul le 08/06/2007 10:46:57

bonjour , bonjour j'ai essayé l'upload C excellent, bravo ! je voudrais faire un sous repertoire pour les miniatures , pour separer les images de base puis celles reduites .je ne sais pas où je pourrais ecrire cela ds le code !! si qq'un peut m'aider !! merci

signaler à un administrateur
Commentaire de Sokaardotbe le 08/06/2007 19:15:39

Je travaille en POO et j'ai donc transformé mis ton code dans une classe PHP5.
Si vous la voulez faite signe :)

signaler à un administrateur
Commentaire de D1stort1on le 08/06/2007 19:21:31

http://www.berguerand.ch/index_unique_mini_sous_dossier.zip

Voilà le lien pour télécharger la source avec les mini qui s'enregistrent dans un sous-dossier :D

signaler à un administrateur
Commentaire de fedebul le 09/06/2007 11:04:08

merci beaucoup encore !!

signaler à un administrateur
Commentaire de monoar le 09/06/2007 14:11:15

Super, exactement ce qu'il me fallait.
Merci

signaler à un administrateur
Commentaire de saffff le 22/06/2007 17:22:41

Salut, je vous félicite pour ce code.
Je débute!
Ma question est à propos de l'enregistrement dans la base de donner, la connexion à cette base.
J'ouvre les fichiers PHP(avec DREAMWEAVER) que vous avez déposer à télécharger,
je reçois un message dans la fenêtre Propriétés en bas:
--> ? Server Markup
Si vous pouvez m'aider, à mieux comprendre ce problème  vous me fournires vraiment une aide précieuse.
Merci d'avance.

signaler à un administrateur
Commentaire de RaniveR le 11/07/2007 18:55:37

salut !!

n'y connaissant rien en programmation, ton script est intéressant, mais il n'y a-t-il pas un moyen d'afficher la ou les images en fin d'upload ?

Merci d'avance

signaler à un administrateur
Commentaire de Vigasse le 12/07/2007 16:59:17

po mall jais notter 10/10

je  viens de le triester et de le modifier pour Uploader des fichier en tout genres mais ben c cool merci

signaler à un administrateur
Commentaire de D1stort1on le 12/07/2007 20:24:58

@ RaniveR

pour afficher les images uploadées, remplace le echo qui dit que le fichier est uploadé avec succès par cette ligne :

echo '<a href="'.$fichier_dossier.$fichier_n_nom.'"><img src="'.$fichier_dossier.$nom_fichier_reduit.'"></a><br />';

Tcho

signaler à un administrateur
Commentaire de D1stort1on le 12/07/2007 20:36:51

@ saffff

Le code que je mets à disposition n'a rien pour ajouter les images dans la bdd, si c'est ce que tu veux faire :

crée un fichier connection.php :
-----------------------------------------
<?
$host = "tes infos ici";
$user = "tes infos ici";
$pass = "tes infos ici";
$bdd = "tes infos ici";

$conn = @mysql_connect($host,$user,$pass)
   or die("Impossible de se connecter");
@mysql_select_db($bdd)
   or die("Impossible de se connecter à la base");
?>



et en suite sur la page upload_mini_proportionnee.php la ou se trouve le commentaire parlant des infos pour la base de donnée tu peux ajouter cela :
-----------------------------------------
include ('connection.php');
$table = 'nom_de_ta_table';
$champ_nom_grande = 'nom_de_ton_champ';
$champ_nom_petite = 'nom_de_ton_champ';


$query = sprintf("INSERT INTO $table ($champ_nom_grande, $champ_nom_petite)"
." VALUES('$fichier_n_nom', '$nom_fichier_reduit')");

$result = mysql_query($query) or die(mysql_error());

mysql_close($conn);

signaler à un administrateur
Commentaire de RaniveR le 13/07/2007 16:20:52

Merci a toi D1stort1on !

encore une ch'tite question

lorsque les images sont uploadées, y a t'il possibilité de voir le contenu du dossier images/
pas seulement pour y voir  les derniere (comme demandé précédement) mais toutes les photo uploadées.

signaler à un administrateur
Commentaire de RaniveR le 13/07/2007 16:49:15

oups encore moi :s

j'arrive pas a faire le truc pour mettre le mini dans le dossier a part :(

faut en faire quoi exactement du fichier "index_unique_mini_sous_dossier.php"

encore toutes mes excuses pour le dérangement

signaler à un administrateur
Commentaire de yoyomb le 23/08/2007 19:42:48

Félicitations pour ce code. Simple mais efficace.
Quel est le poids maximum d'une image que l'on peut uploader ?
En effet, la plupart des images issus d'appareils photos numériques dépasse largement les 2 Mo, et apparemment, même après changement des valeurs $fichier_poids_max on arrive pas à uploader plus de 900 Ko ?

Merci.

signaler à un administrateur
Commentaire de D1stort1on le 28/08/2007 06:21:20

Voilà voilà, j'ai fait un peu de nettoyage sur mon serveur, je vous re-donne le lien pour télécharger le zip de l'upload aved les mini dans un sous-dossier :
http://www.berguerand.ch/fichiers/index_unique_mini_sous_dossier.zip

Byebye

signaler à un administrateur
Commentaire de fedebul le 02/09/2007 11:35:09

BONJOUR a vous !  D1stort1on . suite a ton message du 12/07 , j'ai un petit souci pour créer la base de données !
si tu pouvais m'aider !
merci
laurent

signaler à un administrateur
Commentaire de sylr109 le 05/09/2007 13:18:12

Salut et un grand merci pour ton code d'une grande qualité et utillité.

Voilà je voudrais savoir si il est possible d'afficher une fois arriver sur la page qui affiche la miniature un code avec la miniature et l'url vers l'image en high résolution pour pouvoir l'affiche un forum.

Merci

signaler à un administrateur
Commentaire de flasheurflasheuse le 06/09/2007 15:24:17

Slt. Super sympa ce script.

Il est vrai que cela serait pas mal de pouvoir visualiser les miniatures des images déjà présentes dans le répertoire à tout moment et de pouvoir les supprimer ou modifier.

Avis aux scripteurs ^^

En tout cas merci

signaler à un administrateur
Commentaire de D1stort1on le 20/09/2007 12:15:29

Saluti,

Me suis apperçu que lors de la redimension des photos, une photo plus large que haute ne se modifiait pas correctement, j'ai résolu mon soucis qui était du à un mauvais calcul...

//si plus haut que large
if ($fichier_haut > $fichier_larg) {

$mini_haut = $taille_max;
$mini_larg = $fichier_larg / ($fichier_haut / $taille_max);

}

//si plus large que haut
else {

$mini_haut = $fichier_haut / ($fichier_larg / $taille_max);
$mini_larg = $taille_max;

}


@ fedebul :
----------

Désolé pour le temps de réponse mais j'étais en vacances, pour ajouter l'image donnée dans la bdd voilà une possibilité :

$table = 'b_photos';
$champ_cat = 'cat';
$champ_nom_g = 'nom_g';
$champ_nom_p = 'nom_p';
$champ_date = 'date';
$champ_membre = 'membre';

$f_cat = $_POST['f_cat'];
$f_nom_g = $fichier_n_nom;
$f_nom_p = $nom_fichier_reduit;
$f_date = date("d/m/Y");
$f_membre = $_SESSION['pseudo'];

$query = sprintf("INSERT INTO $table ($champ_cat, $champ_nom_g, $champ_nom_p, $champ_date, $champ_membre)"
." VALUES ('$f_cat', '$f_nom_g', '$f_nom_p', '$f_date', '$f_membre')");
$result = mysql_query($query) or die(mysql_error());


Byebye, n'hésite pas à me recontacter si tu as un autre soucis.

signaler à un administrateur
Commentaire de fedebul le 23/09/2007 09:08:27

merci beaucoup , vais essayer tout ca ! a tres bientot !

signaler à un administrateur
Commentaire de lolowar le 24/09/2007 20:20:04

Salut   et merci pour cette source que j'aurai été incapable de faire!
J'avais fait un petit script pour ça, mais rien à voir avec celui là (bon je débute...).
En revanche peux tu éclairer ma lanterne:
J'ai essayé la version multi avec le rajout de la base de donnée que tu note plus haut dans les commentaires.
Mon problème est que ça me renvoi ça:
Fatal error: Call to undefined function: imagecreatefromjpeg() à la ligne 149.
Du coup je ne sais pas si il fallait définir la fonction avant ou pas... De même pour les lignes suivantes avec "imagesx" "imagesy", faut-il laisser cela comme tu l'as fait ou faut-il leur donner une valeur?
Désolé pour le dérangement puisque je suis le seul qui apparement n'a pas compris!
Lolo

signaler à un administrateur
Commentaire de lolowar le 25/09/2007 10:12:15 10/10

Ouppppssss...
Désolé d'avoir mis le commentaire précédent un peu trop rapidement, je ne connaissais pas encore les fonctions php. Du coup j'ai écris avant de faire des recherches... désolé...
Si quelqu'un a le meme problème, sous easyphp il suffit de cliquer sur Configuration > Extensions PHP > cocher php_gd2.
Ca marche au top avec une base de donnée, un grand grand merci!

signaler à un administrateur
Commentaire de wewewe le 07/11/2007 20:42:41

http://www.berguerand.ch/fichiers/index_unique_mini_sous_dossier.zip

ce lien functionne plus quelqun a un autres lien ?

signaler à un administrateur
Commentaire de kapola le 23/11/2007 22:29:30

eu, pour ma part, je ne sais absolument pas pas comment l'utiliser, je ne suis que bon pour le disign ^^et non pour le php qui m'agace fortement :p, alors pourrait tu m'indiquer comment utiliser ton script. ( je te met 9/10 pour le manque d'explication à l'usage ;)).

signaler à un administrateur
Commentaire de lolowar le 24/11/2007 18:18:45

Manque d'explications???
Tout est soit dans le script, soit en réponse aux commentaires écris plus haut.
Le script est excellent et l'auteur a répondu à quasiment toutes les questions qui lui ont été posée.
Comme tel il s'utilise sans BBD, pour la version avec BBD ça se passe sur la réponse du 12/07/07, avec un correctif le 20/09/07.

signaler à un administrateur
Commentaire de D1stort1on le 24/11/2007 18:52:26

Héhé, merci pour le soutien, le 9/10 me comble déjà héhé, j'ai pas mal bossé sur mon code et vais le remettre à jour, surtout au niveau du fichier .zip

Soyez patients... ;)

De plus je vais répondre à toutes les questions, now j'ai plus de temps libre, à bientôt

signaler à un administrateur
Commentaire de kapola le 24/11/2007 18:57:55

LOLOWAR,
Je répond à ton étonement, je n'est pas di cela méchament... Mais di toi que tu ne connais rien au php... Alors comment fais-tu ? Voilà j'ai vu des script pourri mais bie expliqués.
ps: pour tout vous dire j'ai quand même des bases en php.
Cordialement.

signaler à un administrateur
Commentaire de lolowar le 24/11/2007 19:26:42

Mais non non Kapola, il n'y avait rien de méchant. J'étais moi aussi débutant quand j'ai découvert ce script (là je commence à m'en sortir à force).
Mais justement, meme en temps que débutant je le trouvais super bien expliqué.
Chaque action d'une ligne de code est expliquée en clair.
Aprés pour les fonctions que je ne connaissais pas je les cherchais indépendament sur le net.
Le script se décompose en trois partie, une qui boucle les fichier à envoyer, une qui traite les fichiers (redimmensionne) et la dernière qui t'informe de l'évolution du traitement.
Si tu décompose chaque partie en cherchant les fonctions à coté tu devrais t'en sortir facilement.
Au pire en le recopiant tel quel tu n'as que la première partie (ligne 1 à 56, html et php) à modifier pour l'adapter, le reste pas besoin d'y toucher.
Bonne soirée ;-)

signaler à un administrateur
Commentaire de franckfieldd le 24/11/2007 19:45:22 10/10

Idem que lolowar, je trouve vraiment ce code nickel et fonctionne du premier coup, pour moi il serait parfait, si on avait la possibilitée d'enregistrer le nom des fichiers sur un même champ de table dans une base de donnée.  

signaler à un administrateur
Commentaire de j0li le 30/12/2007 04:54:45

Oui vraiment très bien.
Juste un petie regret que l'on ne peut pas configurer une largeur et une hauteur maximum afin de créer des miniature rectangulaire proportionnées...

signaler à un administrateur
Commentaire de esyounes le 25/02/2008 14:44:53

salut,
jai tester le code, mais il me donne l'erreur suivante:

Warning: move_uploaded_file(images/080225013303.jpg): failed to open stream: No such file or directory in c:\program files\easyphp1-8\www\upload_mini_proportionnee.php on line 39

Warning: move_uploaded_file(): Unable to move 'C:/Program Files/EasyPHP1-8\tmp\phpA2.tmp' to 'images/080225013303.jpg' in c:\program files\easyphp1-8\www\upload_mini_proportionnee.php on line 39
Le fichier n'a pas pu être uploadé

kelk1 px m'aider ??

signaler à un administrateur
Commentaire de phineau17 le 01/03/2008 10:56:47 10/10

Ce script et super et je l'utilise sur tous mes sites > bravo et encore merci pour le temps gagné.

J'ai juste un petit souci que je n'arrive pas à résoudre car pas vraiment connaisseur en développement : si quelqu'un peut m'aider à résoudre mon pb ?

Mon pb est le suivant : je souhaiterai que l'image uploadée soit elle aussi diminuer en taille (par exemple définir une largeur maxi de 600) avec biensûr conservation des proportions de l'image sans rien changer à la création de la miniature qui est super.
Remarque : Je pourrais obliger l'internaute à faire cela avant envoi de son formulaire mais plein d'internautes ne savent pas faire cette manip donc je souhaite que mon serveur le fasse pour eux quelque soit la taille de l'image envoyée.

Merci de m'aider parce que là je calle !    :)

signaler à un administrateur
Commentaire de sebvcx le 08/03/2008 21:17:30 9/10

Ce script est vraiment bien, je vais essayer de l'intégrer à un script de news.
Juste un petit truc c'est que la qualité de l'image réduite est vraiment mauvaise pour les gif
Existe t-il une solution a ce problème ?
Merci encore
Génial

signaler à un administrateur
Commentaire de jboyjboy le 21/05/2008 20:25:46

Quelqu'un aurait une réponse à la question de phineau17 (à la date du 01/03/2008).

signaler à un administrateur
Commentaire de cw75116 le 30/10/2008 12:17:58 10/10

Juste un grand merci pour ce code très clair, et facile a modifier.
:)

signaler à un administrateur
Commentaire de cw75116 le 30/10/2008 12:54:12

a JBOYJBOY

Pour redimentioner la photo il faut rajouter ça APRES la création des miniatures

                                                      /***********************
REDIM
***********************/

// dimension maximale largeur et hauteur comprise
$taille_max = 540;


// si le fichier est plus grand que $taille_max on le miniaturise
if (($fichier_larg > $taille_max) || ($fichier_haut > $taille_max)) {

// définition des dimensions
if ($fichier_haut > $fichier_larg){

$mini_haut = $taille_max;
$mini_larg = $fichier_larg / ($fichier_haut / $taille_max);

}
//si plus large que haut
else {

$mini_haut = $fichier_haut / ($fichier_larg / $taille_max);
$mini_larg = $taille_max;

}
// si le fichier est un .jpg / .jpeg

// définition de la qualité
$qualite=80;

// definition de l'image dont on va faire une miniature

$fichier_source = imagecreatefromjpeg($fichier_dossier.$fichier_n_nom);

// on prépare le fichier miniature qui accueillera l'image réduite
$fichier_reduit = imagecreatetruecolor($mini_larg, $mini_haut);

// dimensions x et y à donner au fichier
$fichier_larg_red = imagesx($fichier_reduit);
$fichier_haut_red = imagesy($fichier_reduit);

// on rajoute un mini_ defant le nom du fichier
$nom_fichier_reduit = $fichier_n_nom;

// on redimensionne l'image de base dans le fichier $fichier_reduit
imagecopyresampled($fichier_reduit, $fichier_source, 0, 0, 0, 0, $fichier_larg_red, $fichier_haut_red, $fichier_larg, $fichier_haut);

// crée le fichier réduit définitif
imagejpeg($fichier_reduit, $fichier_dossier.$nom_fichier_reduit, $qualite);

// on donne un acces total sur le fichier
chmod($fichier_dossier.$nom_fichier_reduit, 0777);
}

D'bord tu upload sur le serveur la photo, puis ca crée la miniature, et redimentionne l'original.
Il faut bien veiller a mettre ce code APRES la miniature, sinon la miniature va être mauvaise.

signaler à un administrateur
Commentaire de piloux71 le 06/11/2008 16:28:52 10/10

Bonjour, bravo pour ce script , très bien commenté j' ai facilement réussi à l' adapter ; encore merci!

signaler à un administrateur
Commentaire de caviar le 30/11/2008 01:35:08

saluté, merci pour le script ça m'a servi aussi :)
au passage pour ceux que ça intéresse j'ai mis en ligne un petit script d'upload multiple sur ce site http://www.nasuploader.com
ça peut servir de base pour un traitement en php comme celui ci derrière par exemple
@++

signaler à un administrateur
Commentaire de fedebul le 25/01/2009 17:45:28

bonjour, merci encore pour le script mais Côté serveur dans le dossier images, il me crée des fichiers sans le nom de la photo et avec des choses comme ça :

0_090125053606.png
mini_0_090125053606.png

comment peut on faire pour qu'il garde le même nom de la photo qu'à l'origine ?

merci beaucoup
laurent

signaler à un administrateur
Commentaire de D1stort1on le 27/01/2009 19:45:49

Salut,

Alors le nom original de ton image est dans la variable $fichier_nom, si tu veux que le nom contienne la designation originale, remplace à la ligne 65 :

$fichier_n_nom = $nbr."_".$fichier_date.".".$fichier_ext;

par

$fichier_n_nom = $nbr."_".$fichier_nom.".".$fichier_ext;


La variable $nbr permet de rajouter le numéro de champ au nom de fichier, car j'ai eu parfois, lors d'upload de petits fichiers qui s'uplodaient dans la meme seconce, que l'image soit écrasée par la suivante. Tu peux aussi laisser la date et ajouter le nom original de cette manière :

$fichier_n_nom = $nbr."_".$fichier_date."_".$fichier_nom.".".$fichier_ext;

J'ai pas testé, j'espère que ca fonctionnera.

@plus

signaler à un administrateur
Commentaire de fedebul le 27/01/2009 19:57:03

merci à toi et encore bravouche !!
lolo

signaler à un administrateur
Commentaire de phineau17 le 28/01/2009 00:33:38

Grand merci à JBOYJBOY
pour son excellente réponse à mon problème de dimensionnement de la photo d'origine !  

C'est tip top

signaler à un administrateur
Commentaire de daddy11world le 08/02/2009 11:29:49

MERCI :)

signaler à un administrateur
Commentaire de loran86 le 26/03/2009 16:10:02 8/10

Excellent script, permet une très bonne base pour des développements additionnels tels la création automatique d'un répertoire principal Images qui contient les grandes images et l'écriture automatique du sous-répertoire de votre choix (thumbs par exemple) qui contient les miniatures...
Coupler le tout à 2 bdd (users et photos_users par exemple), enregistrer les données et zou le tour est joué !
Attention toutefois à ne pas oublier de donner les autorisations de suppression sur les répertoires créés, faute de quoi vous ne pourrez pas les effacer du serveur ;o)

Une tite portion du script final :

//Création du répertoire IMAGES principal du membre sur le serveur
$dos_membre = preg_replace("#([^a-zA-Z0-9]+)#", "", $_POST['pseudo_membre']).'_'.rand();
$dos_destinataire = '/votre_chemin_absolu/'.$dos_membre.'/';
@mkdir($dos_destinataire);
//Création du sous-répertoire THUMBS qui contiendra les miniatures liées aux photos principales du membre
$dos_th_membre = 'thumbs'; //par exemple
$dos_dest_th = '/votre_chemin_absolu/'.$dos_membre.'/'.$dos_th_membre.'/';
@mkdir($dos_dest_th);

puis plus bas :

// dossier de destination - enlever le 1er slash si echec
$fichier_dossier = '/votre_chemin_absolu/'.$dos_membre.'/';
chmod($fichier_dossier, 0777);
$fichier_dossier_mini = '/votre_chemin_absolu/'.$dos_membre.'/'.$dos_th_membre.'/';
chmod($fichier_dossier_mini, 0777);

et hop ça roule ! :o)

Un grand bravo à l'auteur pour la qualité de son travail et le sérieux de son suivi...

A signaler une petite erreur (ou pas, ça dépend de ce que l'on veut farie) dans le code donné par JBOYJBOY, à la ligne :

// on rajoute un mini_ defant le nom du fichier
nom_fichier_reduit = $fichier_n_nom;

j'ai personnellement corrigé ainsi :

// on rajoute un mini_ defant le nom du fichier
$fichier_n_nom = $fichier_n_nom;

Pourquoi ? Tout simplement parce que pendant mes tests avec cette méthode supplémentaire donnée par JBOYJBOY, ça me créait la miniature dans le rep 'thumbs', la photo redimensionnée en 540 (selon les paramètres d'origine donnés par JBOYJBOY) MAIS ça m'uploadait également le fichier original non redimensionné et qui m'est tout à fait inutile.
Après, comme dit, ce plus (ou erreur) peut avoir son utilité en fonction de l'appli finale.

Sur ce, bon code, l'implantation continue !
Merci
Laurent

signaler à un administrateur
Commentaire de D1stort1on le 05/04/2009 10:56:21

@Loran86
Merci pour le commentaire. En postant mon code je ne pensais pas qu'il serait autant apprécié. Je ne suis qu'un amateur, qui aime bien bidouiller en php. Et effectivement, une fois couplé à une gestion de base de données, le script devient super utile et est facile à adapter à plusieurs types d'utilisations.

Je n'ai mis a disposition que l'upload. Si ça peut intéresser, je mets assez volontier le code complet a télécharger sur mon site ;)

Merci pour les encouragements.
@+++++++++++

signaler à un administrateur
Commentaire de matthieugoua le 22/05/2009 19:46:09

Salut a toi d1stort1on très bon script, j'aurais juste une demande serait il possible d'y rajouter un moyen de remplacer les caractères spéciaux lors de l'upload dans le style

function filter($in) {
$search = array ('@[éèêëÊË]@i','@[àâäÂÄ]@i','@[îïÎÏ]@i','@[ûùüÛÜ]@i','@[ôöÔÖ]@i','@[ç]@i','@[ ]@i','@[^a-zA-Z0-9.-]@');
$replace = array ('e','a','i','u','o','c','-','');
return preg_replace($search, $replace, $in);
}

j'ai essayé mais étant encore plus amateur que toi je ne m'en sort pas

Merci d'avance

signaler à un administrateur
Commentaire de ines57 le 27/05/2009 15:11:10

Salut,

Ton script fonctionne à merveille, par contre j'ai un soucis, je n'arrive pas à enregistrer le nom de l'image dans la base de données. Je me suis servie de ce que tu as donné, mais je n'ai pas les mêmes champs et j'ai pas réussi à l'adapter.

Pourrais-tu m'aider stp?

signaler à un administrateur
Commentaire de D1stort1on le 27/05/2009 17:46:57

Ciao,

mon exemple était un peu fait à la va-vite ;)

Pour ce qui est de l'enregistrement du nom de fichier dans la base de données dans ta requète, dans la valeur qui correspond à ton champs tu mets "$nom_fichier_reduit" pour la petite et $fichier_n_nom pour la grande image me semble-t-il (je l'utilise de plusieurs façon sur mes différents sites donc je m'embrouille parfois).

Si non montre-moi la structure de ta table et le code que tu as utilisé pour l'ajout. J'y donnerai un coup d'oeil.

signaler à un administrateur
Commentaire de ines57 le 28/05/2009 09:18:09

Salut :)
Merci d'avoir répondu.

Alors, en fait j'ajoute dans une table appelée annonce :

CREATE TABLE `annonce` (
  `ann_no_annonce` int(11) NOT NULL auto_increment,
  `ann_mdp` varchar(10) NOT NULL default '',
  `ann_titre` varchar(100) NOT NULL default '',
  `ann_no_appartient` int(10) NOT NULL default '0',
  `ann_description` text NOT NULL,
  `ann_prix` int(100) NOT NULL default '0',
  `ann_surface` int(3) default '0',
  `ann_nb_pieces` int(10) NOT NULL default '0',
  `ann_photo` varchar(255) default NULL,
  `ann_photo_min` varchar(20) NOT NULL default '',
  `ann_nom` varchar(100) NOT NULL default '',
  `ann_prenom` varchar(100) default NULL,
  `ann_no_pays` int(10) NOT NULL default '0',
  `ann_no_ville` varchar(100) default NULL,
  `ann_no_tel` int(15) default NULL,
  `ann_mail` varchar(100) NOT NULL default '',
  `ann_valide` char(3) NOT NULL default 'non',
  PRIMARY KEY  (`ann_no_annonce`)
) TYPE=BerkeleyDB AUTO_INCREMENT=9 ;

Voici la partie dans le formulaire pour ajouter (pour la photo) :

[code]

<?php

$nbr_champs = 3;
for($nbr=0;$nbr<$nbr_champs;$nbr++){

echo ?><input type="file" name="fichier_upload_<?php echo $nbr; ?>" id="fichier_upload_<?php echo $nbr; ?>"><br/><br/>

<?php
}
?>

[/code]

Puis pour le traitement je me suis servie de ton code, en enlevant la rotation.

En fait, je veux enregister le nom des images respectivement dans ann_photo et ann_photo_min.

Je te remercie de ton aide




signaler à un administrateur
Commentaire de D1stort1on le 30/05/2009 15:37:13

Salut,

logiquement, tu devrais procéder de la manière suivante pour ajouter le nom des photos :

$query = sprintf("INSERT INTO annonce (ann_photo, ann_photo_min)"
." VALUES ('$fichier_n_nom', '$nom_fichier_reduit')");
$result = mysql_query($query) or die(mysql_error());

enfin, ce n'est qu'un extrait minimaliste, ta requête pourra contenir tous tes autres champs, mais normalement en procédant de la sorte, le nom des images devrait s'ajouter correctement à la bdd. Si vraiment ce n'est pas le cas, essaie de tester ces 2 variables, de façon à savoir si elles ont bien une valeur.

@+
J'espère que ca ira ;)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

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 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 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'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 :) [ 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 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 pb de upload [ par filrouge13 ] Bonjour,Petit probl&#232;me de upload et de v&#233;rification de l'existence du fichier.J'ai r&#233;cup&#233;r&#233; ce code sur un forum, il devrait Upload apres Redimension d'une image jpg sous Free [ par MrManchot ] Tout d&#233;ja Bonjour a tous &nbsp;(c'est mon premier poste ici).Je suis d&#233;butant en php, et je n'arrive pas a Uploader apres avoir redimensionn


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,577 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.