[Besoin d'aide] Script upload & redimmensionnement

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [Besoin d'aide] Script upload & redimmensionnement

Re: [Besoin d'aide] Script upload & redimmensionnement

par Titiii » 03 nov. 2011, 15:09

Bah en fait, je voulais incrémenter le nom des fichiers. Par exemple, la première image uploadée serait 1.png, et au bout de quelques temps, ça serait 7412.jpg...
Normalement, $ligne aurait dû retourner 1 par exemple :s

Re: [Besoin d'aide] Script upload & redimmensionnement

par moogli » 02 nov. 2011, 18:34

bon déjà le var_dump($ligne) on s'en fou un peu la :)

par contre tu peux voir que le var_dump($nom) t'indique que le nom de fichier pour le déplacement c'est 'upload/png' ce qui, je pense, ne te convient pas :mrgreen:

tu peux remplacer ces lignes
<?php
$ligne = fgets($compteur);
$ligne++;
$nom = $ligne . $infosfichier['extension'];
fseek($compteur, 0);
fputs($compteur, $ligne);
fclose($compteur);
?>
par un file_get_contents un increment et file_put_contents :)

je ne comprend pas ce que tu veux faire avec ce fichier. si c'est pour avoir un nom de fichier unique tu peux utiliser, par exemple uniq_id, ou microtime

@+

Re: [Besoin d'aide] Script upload & redimmensionnement

par Titiii » 02 nov. 2011, 18:04

Bonjour !
J'ai mis comme ceci :
if (in_array($extension_upload, $extensions_autorisees))	//Si le fichier à la bonne extension
								{
									$compteur = fopen('nameimg.cyar', 'r+');
									$ligne = fgets($compteur);
									$ligne++;
									$nom = $ligne . $infosfichier['extension'];
									fseek($compteur, 0);
									fputs($compteur, $ligne);
									fclose($compteur);
									mysql_query("INSERT INTO uploads VALUES (' ', '".$_SESSION['id']."', '".$ligne."', '".$infosfichier['extension']."')");
									var_dump($nom);
									move_uploaded_file($_FILES['monfichier']['tmp_name'], 'uploads/' . $nom);
									
									
									var_dump($ligne);
									Img::creerMin('uploads/'.$nom, 'uploads', $ligne,215,112);
									
								}
Et voici ce que j'ai :
string(3) "png" bool(false)

Re: [Besoin d'aide] Script upload & redimmensionnement

par moogli » 31 oct. 2011, 17:34

utilise var_dump() dans la méthode de redimensionnement pour voir ce que tu lui passe comme info.
idem avant le move_uploaded_file sur le nom que tu met en second paramètre histoire de comparer les deux !

@+

Re: [Besoin d'aide] Script upload & redimmensionnement

par Titiii » 31 oct. 2011, 14:41

Merci, j'ai modifié ça... Mais j'ai toujours la même erreur.
(j'ai bien sûr mis la définition de $nom avant ;) )

Re: [Besoin d'aide] Script upload & redimmensionnement

par moogli » 31 oct. 2011, 13:21

le fichier n'existe pas !

Et quand je vois ton code je pense qu'il n'a pas tort !
<?php
move_uploaded_file($_FILES['monfichier']['tmp_name'], 'uploads/' . basename($ligne));
//....
Img::creerMin('uploads/'.$nom,....);
?>
Tu copie ton fichier dans 'uploads/' . basename($ligne) et tu utilise 'uploads/'.$nom, la je pense qu'il y a une différence !

un truc qui peux t'aider : http://phpdebutant.org/article52.php

@+

Re: [Besoin d'aide] Script upload & redimmensionnement

par Titiii » 30 oct. 2011, 22:48

(Petit Up :mrgreen: )

Re: [Besoin d'aide] Script upload & redimmensionnement

par Titiii » 29 oct. 2011, 20:59

J'ai toujours la même erreur :s
Warning: getimagesize(uploads/png) [function.getimagesize]: failed to open stream: No such file or directory in /www/imgClass.php on line 8

Re: [Besoin d'aide] Script upload & redimmensionnement

par Alf?> » 29 oct. 2011, 19:32

Ok. Traduction en différé c'est parti,

On a le code suivant :
if(substr(strtolower($img),-4)==".jpg"){imagejpeg($miniature,$chemin."/".$nom.".jpg",90);}
else if(substr(strtolower($img),-4)==".png"){imagejpeg($miniature,$chemin."/".$nom.".png",90);}
else if(substr(strtolower($img),-4)==".gif"){imagejpeg($miniature,$chemin."/".$nom.".gif",90);}
strtolower() => met en minuscule
substr() => avec le paramètre -4 signifie qu'il récupère les 4 derniers caractères de l'image et qui correspondent à l'extension de l'image (.jpg, .png, .gif)

Ensuite il te créé un lien pour l'image avec la fonction imagejpeg()
lien qui ressemble à ça avec l'exemple précédent (donc en concervant le dossier min)(observe bien : un slash est rajouté entre le chemin et le nom)
uploads/min/monImage.jpg

Remarque :
le lien va varier de tel manière selon le résultat retourné par la fonction substr() ( et le paramètre '-4')
uploads/min/monImage.jpg
uploads/min/monImage.png
uploads/min/monImage.gif
Au final il faut admettre que le script n'est pas dynamique car les extensions doivent forcément se limiter à 3 caractères et tu sera obliger de rajouter une ligne de code pour chaques extensions que tu souhaite ajouter.... :?

Donc maintenant si on en vient aux modifications que tu as apporté, le script te retourneras le lien suivant :
$nom = 1.png
$ligne = 1
Img::creerMin('uploads/'.$nom, 'uploads/', $ligne,215,112);
lien ==> uploads//1.png

Modification a apporter :
remplace
Img::creerMin('uploads/'.$nom, 'uploads/', $ligne,215,112);
par
Img::creerMin('uploads/'.$nom, 'uploads', $ligne,215,112);
Tiens moi au courant si tu as des erreurs.

Re: [Besoin d'aide] Script upload & redimmensionnement

par Titiii » 29 oct. 2011, 18:16

Alors j'ai modifié cette ligne par :
Img::creerMin('uploads/'.$nom, 'uploads/', $ligne,215,112);
Par exemple : $nom = 1.png
$ligne = 1

Du coup, pour les les images soient remplacées, j'ai supprimé le dossier min, car je n'utiliserait pas les images en taille réelle.

Sinon, non, je ne comprends pas ces quatre lignes de code :s

Re: [Besoin d'aide] Script upload & redimmensionnement

par Alf?> » 29 oct. 2011, 17:40

C'est un problème de destination. Je t'explique.

Donc en imaginant que $nom = 'monImage.jpg'.

le processus se fait ainsi :
Img::creerMin('uploads/monImage.jpg, 'uploads/min', 'monImage', 215, 112)
On envoie le lien de mon image ($img) avec pour nom 'monImage' ($nom), on lui applique des dimensions et on l'envoi dans le dossier des miniatures ($chemin).

Mais le dossier des miniature dans le code actuel a pour lien 'uploads/min/'..... alors que tu fais appel à une image dans le dossier 'uploads'
L'arborescence des fichier doit donc se présenter comme ceci:

Le dossier uploads contient :
-les fichiers images,
-le dossier min qui contient :
-les fichiers image miniaturiser

Petite précision concernant 'min' :
Les lignes de code suivantes te montre que c'est un dossier :
if(substr(strtolower($img),-4)==".jpg"){imagejpeg($miniature,$chemin."/".$nom.".jpg",90);}
else if(substr(strtolower($img),-4)==".png"){imagejpeg($miniature,$chemin."/".$nom.".png",90);}
else if(substr(strtolower($img),-4)==".gif"){imagejpeg($miniature,$chemin."/".$nom.".gif",90);}
return true;
Est-ce que tu as compris le traitement des différentes variables dans les lignes ci-dessus ?

Re: [Besoin d'aide] Script upload & redimmensionnement

par Titiii » 29 oct. 2011, 15:40

(Petit Up :mrgreen: )

Re: [Besoin d'aide] Script upload & redimmensionnement

par Titiii » 29 oct. 2011, 13:54

Min est un dossier ? Je ne comprends pas :/

Sinon quelqu'un aurait une idée pour remplacer ça ? En fait c'est un gars qui m'a passé le bout de code du redimensionnement... 8-|
J'ai mis l'include du fichier au même endroit que l'include de la connexion à la bdd.
J'ai aussi modifié min par uploads/$nom

(qui va être par exemple : uploads/1.png )

Merci :)

Re: [Besoin d'aide] Script upload & redimmensionnement

par Alf?> » 29 oct. 2011, 13:46

Et vérifie aussi que les dossier uploads et min sont bien ciblés existes et dans ce bout de code :
move_uploaded_file($_FILES['monfichier']['tmp_name'], 'uploads/' . basename($ligne));
$nom = $ligne . $infosfichier['extension'];
include('imgClass.php');
Img::creerMin('uploads/'.$nom,'uploads/min',$nom,215,112);

Re: [Besoin d'aide] Script upload & redimmensionnement

par Alf?> » 29 oct. 2011, 13:42

Salut Titiii,

D'après l"erreur, ton fichier contenant la class pour resize les images n'est pas au bonne endroit quand tu fais ton appel
include('imgClass.php');
De plus, il est préférable de placer ton include de fichier au début de ton fichier comme tu as fais pour include('connexion_bdd.php');