script vignette qui ne marche pas

  • Auteur de la discussion Auteur de la discussion catseyes
  • Date de début Date de début
Nouveau WRInaute
bonjour,
j'ai un script qui marche pour l'upload photos (dossier et BDD), mais la partie vignette du script est inopérante. :cry:
J'ai beau tourner et retourner le code, je ne vois pas la solution, mais vu mon petit niveau en php, rien d'étonnant :( .

Pouvez vous m'aider à y voir plus clair ??
voici la partie vignette qui bug : message upload de la vignette échoué

Code:
<?
session_start();
include ('../_connexion.php');

?>

<?php

function vignette($file = photo, $maxWidth = 60, $maxHeight = 60){
   
   // Vérification des erreurs dans les paramètres de la fonction
   //============================================================
   if(!file_exists($file)){
      // Si le fichier passé en paramètre n'existe pas
      return 'Le fichier '.$file.' n\'a pas été trouvé sur le serveur.';
   }
   elseif(empty($file)){
      // Si le fichier n'a pas été indiqué
      return 'Nom du fichier non renseigné.';
   }
   elseif(!is_numeric($maxWidth) || empty($maxWidth) || $maxWidth < 0){
      // Si la largeur max est incorrecte (n'est pas numérique, est vide, ou est inférieure à 0)
      return 'Valeur de la largeur incorrecte.';
   }
   elseif(!is_numeric($maxHeight) || empty($maxHeight) || $maxHeight < 0){
      // Si la hauteur max est incorrecte (n'est pas numérique, est vide, ou est inférieure à 0)
      return 'Valeur de la hauteur incorrecte.';
   }
   //============================================================
   
   $fichier = realpath($file); // Chemin canonique absolu de l'image
   $dir = dirname($file).'http://allhambra.free.fr/Peter%20span%20design/Art/photo/art_table/'; // Chemin du dossier contenant l'image
   $infoImg = getimagesize($fichier); // Récupération des infos de l'image
   $imgWidth = $infoImg[0]; // Largeur de l'image
   $imgHeight = $infoImg[1]; // Hauteur de l'image
   
   // Initialisation des variables selon l'extension de l'image
   switch($infoImg[2]){
      case 2:
         $img = imagecreatefromjpeg($fichier); // Création d'une nouvelle image jpeg à partir du fichier
         $extImg = '.jpg'; // Extension de l'image
      break;
      case 3:
         $img = imagecreatefrompng($fichier); // Création d'une nouvelle image png à partir du fichier
         $extImg = '.png';
   }
   
   // Initialisation des dimensions de la vignette si elles sont supérieures à l'original
   if($maxWidth > $imgWidth){ $maxWidth = $imgWidth; }
   if($maxHeight > $imgHeight){ $maxHeight = $imgHeight; }
   
   $whFact = $maxWidth/$maxHeight; // Facteur largeur/hauteur des dimensions max de la vignette
   $imgWhFact = $imgWidth/$imgHeight; // Facteur largeur/hauteur de l'original
   
   // Fixe les dimensions de la vignette
   if($whFact < $imgWhFact){
      // Si largeur déterminante
      $thumbWidth  = $maxWidth;
      $thumbHeight = $thumbWidth / $imgWhFact;
   } else {
      // Si hauteur déterminante
      $thumbHeight = $maxHeight;
      $thumbWidth  = $thumbHeight * $imgWhFact;
   }
   
   $imgThumb = imagecreatetruecolor($thumbWidth, $thumbHeight); // Création de la vignette
   
   imagecopyresized($imgThumb, $img, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $imgWidth, $imgHeight); // Insère l'image de base redimensionnée
   
   $fileName = basename($file, $extImg); // Nom du fichier sans son extension
   $imgThumbName = $dir.$fileName.'-min'.$extImg; // Chemin complet du fichier de la vignette
   
   //Création du fichier de la vignette
   $fp = fopen($imgThumbName, "w");
   fclose($fp);
   
   // Renvoi la vignette créée
   switch($infoImg[2]){
      case 2:
         imagejpeg($imgThumb, $imgThumbName, 50); // Renvoi d'une image jpeg avec une qualité de 50
         break;
      case 3:
         imagepng($imgThumb, $imgThumbName);
   }
   
   return $imgThumbName;

}
 ?> 
 <?
 session_start();

				$DESTINATION_FOLDER = "vignette";
				$MAX_SIZE = 1000000;
				$AUTH_EXT = array(".jpg", ".gif");
				
				if(!empty($_FILES["file"]["name"]))
					{
					$nomFichier = $_FILES["file"]["name"] ;
					$nomTemporaire = $_FILES["file"]["tmp_name"] ;
					$typeFichier = $_FILES["file"]["type"] ;
					$poidsFichier = $_FILES["file"]["size"] ;
					$codeErreur = $_FILES["file"]["error"] ;
					$extension = strrchr($nomFichier, ".");
					$nomFichier1 = "article-" . $compteur . $extension;
					if($poidsFichier != 0)
						{
						if($poidsFichier < $MAX_SIZE)
							{
							if(isExtAuthorized($extension))
								{
								$uploadOk = move_uploaded_file($nomTemporaire, $DESTINATION_FOLDER.$nomFichier1);
								if($uploadOk) {
								$query="UPDATE 1two_ecommerce_prod SET vignette='vignette/" . "$nomFichier1' WHERE compteur='$compteur'";
								$resswitch = @mysql_query($query,$db);
								
								echo "<span class='texte'>L'upload de la vignette a réussi !<br><br> <a href='index.php?menu=items' class='lien2'>Revenir à l'administration</a>.</span>";
								}
								else { echo("<span class='texte'>L'upload de la vignette a échoué !<br><br></span>"); }
								}
							else
								{
								echo "<span class='texte'><font color='FF0000'>Les fichiers avec l'extension " . $extension . " ne peuvent pas être uploadés !</font><br><br> <a href='index.php?menu=items' class='lien2'>Revenir à l'administration</a>.</span>";
								}
							}
						else
							{
							$tailleKo = $MAX_SIZE / 1000000;
							echo "<span class='texte'><font color='FF0000'>Vous ne pouvez pas uploader de fichiers dont la taille est supérieure à : " . $tailleKo . " Ko.</font><br><br> <a href='index.php?menu=items' class='lien2'>Revenir à l'administration</a>.</span>";
							}		
						}
					else
						{ 
						echo "<span class='texte'><font color='FF0000'>Le fichier choisi est invalide !</font><br><br> <a href='index.php?menu=items' class='lien2'>Revenir à l'administration</a>.</span>";
						}
					}
				else
					{ 
					echo "<span class='texte'><font color='FF0000'>Vous n'avez pas choisi de fichier !</font><br><br> <a href='index.php?menu=items' class='lien2'>Revenir à l'administration</a>.</span>";
					}

						
?>
 
WRInaute discret
En regardant vite fait, moi y a ce bout de code qui m'interpelle :

Code:
//Création du fichier de la vignette
$fp = fopen($imgThumbName, "w");
fclose($fp);

Tu devrais essayer de l'enlever, le fichier image étant créé avec imagejpeg ou imagepng..

++
 
Nouveau WRInaute
ça serait du à :
Code:
 $fichier = realpath($file); // Chemin canonique absolu de l'image
que j'ai laissé tel quel ne sachant pas ce qu'est un chemin canonique?
Pour les droits d'écriture, le dossier est chmodé normalement.
Je vais vérifier, merci les gars ! :lol:
 
Nouveau WRInaute
le message d'erreur est le suivant :

L'upload a réussi (des photos)!

Revenir à l'administration. L'upload de la vignette a échoué !
car avant la partie vignette du script, j'ai la partie photos qui elle marche :

Code:
<?
				$DESTINATION_FOLDER = "photo";
				$MAX_SIZE = 1000000;
				$AUTH_EXT = array(".jpg", ".gif");
				function isExtAuthorized($ext){
					global $AUTH_EXT;
					if(in_array($ext, $AUTH_EXT)){ return true; }
					else{ return false; } }
				if(!empty($_FILES["file"]["name"]))
					{
					$nomFichier = $_FILES["file"]["name"] ;
					$nomTemporaire = $_FILES["file"]["tmp_name"] ;
					$typeFichier = $_FILES["file"]["type"] ;
					$poidsFichier = $_FILES["file"]["size"] ;
					$codeErreur = $_FILES["file"]["error"] ;
					$extension = strrchr($nomFichier, ".");
					$nomFichier1 = "article-" . $compteur . $extension;
					if($poidsFichier != 0)
						{
						if($poidsFichier < $MAX_SIZE)
							{
							if(isExtAuthorized($extension))
								{
								$uploadOk = move_uploaded_file($nomTemporaire, $DESTINATION_FOLDER.$nomFichier1);
								if($uploadOk) {
								$query="UPDATE 1two_ecommerce_prod SET photo='photo/" . "$nomFichier1' WHERE compteur='$compteur'";
								$resswitch = @mysql_query($query,$db);
								
								echo "<span class='texte'>L'upload a réussi !<br><br> <a href='index.php?menu=items' class='lien2'>Revenir à l'administration</a>.</span>";
								}
								else { echo("<span class='texte'>L'upload a échoué !<br><br></span>"); }
								}
							else
								{
								echo "<span class='texte'><font color='FF0000'>Les fichiers avec l'extension " . $extension . " ne peuvent pas être uploadés !</font><br><br> <a href='index.php?menu=items' class='lien2'>Revenir à l'administration</a>.</span>";
								}
							}
						else
							{
							$tailleKo = $MAX_SIZE / 1000;
							echo "<span class='texte'><font color='FF0000'>Vous ne pouvez pas uploader de fichiers dont la taille est supérieure à : " . $tailleKo . " Ko.</font><br><br> <a href='index.php?menu=items' class='lien2'>Revenir à l'administration</a>.</span>";
							}		
						}
					else
						{ 
						echo "<span class='texte'><font color='FF0000'>Le fichier choisi est invalide !</font><br><br> <a href='index.php?menu=items' class='lien2'>Revenir à l'administration</a>.</span>";
						}
					}
				else
					{ 
					echo "<span class='texte'><font color='FF0000'>Vous n'avez pas choisi de fichier !</font><br><br> <a href='index.php?menu=items' class='lien2'>Revenir à l'administration</a>.</span>";
					}
					
?>
 
WRInaute accro
En fait je pense que ce que te demandais rog, ce n'était pas tant le message d'erreur que toi tu affiches que l'extrait des log apache qui concerne ton upload.
 
Nouveau WRInaute
pour les droits d'écriture, je suis a 700, mais mais mon serveur ftp refuse de mettre plus peut être parce que je suis chez free?
 
Nouveau WRInaute
pourquoi ne pas faire la miniature juste apres l'upload de l'image, dans la mm portion de script...
Mais c'est exactement ce que je veux faire !
Dans l'absolu je veux uploader ma photo, créer la miniature correspondante et incrémenter tout ca dans ma BDD
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut