UPLOAD PHOTO AVEC REDIMENT. PIXELS, KB, ...

niamor36 Messages postés 25 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 19 février 2010 - 8 mai 2006 à 10:16
php26 Messages postés 6 Date d'inscription lundi 18 janvier 2010 Statut Membre Dernière intervention 20 janvier 2010 - 18 janv. 2010 à 16:23
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/37459-upload-photo-avec-rediment-pixels-kb

php26 Messages postés 6 Date d'inscription lundi 18 janvier 2010 Statut Membre Dernière intervention 20 janvier 2010
18 janv. 2010 à 16:23
bonjour!

est ce que quelque aurait une solution pour les photos > 2MO!!
cela fait deux semaines que je tourne sans solutions!
merci par avance!!
jujudu51 Messages postés 1 Date d'inscription vendredi 11 mai 2007 Statut Membre Dernière intervention 19 juin 2008
19 juin 2008 à 13:22
Bonjour !

super ce script je l'est adapter à mon site mais petit problème qui est quand même embêtant pourquoi les photos de plus de 2200px ne se redimensionne pas? en dessous ca passe niquel mais au dessus ça marche pas !
on le voit bien avec les echos puisque il n'affiche plus la taille coté serveur , la miniature etc...
Cela ne vien t'il pas de de la taille de la mémoire alloué sur le serveur ? j'ai essayer différentes manipulations envins

merci de votre aide !!!
asdr Messages postés 9 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 21 juin 2011
30 nov. 2006 à 03:12
Yep!!!
Merci beaucoup, cela va me permettre d'avancer dans mon projet de blog!!!
cs_darkcity Messages postés 1 Date d'inscription jeudi 23 novembre 2006 Statut Membre Dernière intervention 23 novembre 2006
23 nov. 2006 à 22:32
Salut et félicitations pour ce script !

Maintenant j'aurais juste une question à vous poser... J'aimerai que les utilisateurs de mon site web puissent envoyer une photo qui sera redimensionnée automatiquement (jusque là ça correspond) mais en DEUX tailles différentes et dans DEUX dossiers différents.

Pour compliquer la chose, j'aimerais enlever tous les codes en rapport avec le cookie et toutes les vérification et orientation qui en résulte...

Ok, c'est un nouveau script en gros mais voilà, si quelqu'un a une idée car moi je ne parviens pas à trouver !
kubiac88 Messages postés 4 Date d'inscription jeudi 17 mars 2005 Statut Membre Dernière intervention 3 décembre 2007
23 juin 2006 à 12:23
Salut,

Sympa ton script. Configurable, facile à intégrer, réutilisable. Je pense qu'il peut être bien utile pour un débutants (et pour les autres aussi tant qu'à faire). Merci bien.
cs_Bouillou2 Messages postés 11 Date d'inscription dimanche 28 mars 2004 Statut Membre Dernière intervention 31 juillet 2006
25 mai 2006 à 13:10
Bonjour,

Content d'avoir pu t'aider Padaone ;o)

J'ai besoin d'un petit coup de pouce de votre part:

Je me suis penché sur l'utilisation de AJAX pour permettre l'affichage de la barre de progression lors de l'upload. Malheureusement, il est nécessaire d'installer des scripts sur le serveur et cela m'est impossible.

Pour ceux que cela intéresse:
http://blog.joshuaeichorn.com/archives/2006/03/14/php-ajax-file-upload-progress-meter-updates/

Je me suis dis tant pis, je me rabat sur une estimation du temps restant via la taille du fichier temporaire en cours de chargement. Re-flut --> Impossible de consulter la taille du fichier temporaire en cours. Je ne le vois pas.

Bref, je sèche complètement. A votre avis, serait-il possible de faire un ping-pong avec un fichier présent sur le serveur en forçant le "download" et l'"upload" afin de pouvoir calculer la vitesse?

Merci d'avance pour votre aide,

Bouillou
Padaone91 Messages postés 22 Date d'inscription lundi 22 mai 2006 Statut Membre Dernière intervention 20 décembre 2008
23 mai 2006 à 16:58
Merci. En fait j'ai trouvé la solution à mon problème. Il s'agit d'une erreur bête (normal je suis débutant) en fait je n'avait pas mis au bon endroit la variable qui permettait d'établir le chemin des fichiers présent dans mon dossier. J'avais mis cette varible avant ma boucle qui parcour le dossier et donc la variable n'était pas incrémentée ce qui entrainai une erreur.

Merci à tous.
Ca marche, à vous de testez si vous voulez car c'est quand même grâce à vous que j'ai pu réaliser cela.

http://padaone.info/upload.php
niamor36 Messages postés 25 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 19 février 2010
23 mai 2006 à 13:09
La connexion ftp ne te permettra pas de voir les images padaone91. Rien à voir.
Vérifie les droits sur son dossier et tout devrait fonctionner.

A+R.
Padaone91 Messages postés 22 Date d'inscription lundi 22 mai 2006 Statut Membre Dernière intervention 20 décembre 2008
23 mai 2006 à 10:55
Dites,

Ne faudrai t'il pas ouvrir une connexion FTP afin de permettre l'affichage des images du dossier ? car tout semble correct mais rien ne s'affiche et lorsque je tape http://padaone.info/images_upload il y a un beau message d'erreur qui me dit vous n'avez pas les droit d'accès.

Merci
niamor36 Messages postés 25 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 19 février 2010
22 mai 2006 à 23:05
Pour Padaone91 :

vérifie le html que tu obtiens :
img src="http://padaone.info//images_upload/ " pas bon...
Et d'ailleurs pourquoi mettre cette variable $site ?
Ton erreur vient du chemin incorrect vers l'image.

L'erreur la plus importante vient de la boucle...
Tu as viré la condition de correspondance au fichier. je te remets le code complet :

// si tu veux vraiment un chemin complet et fixe, mets le ici,... au moins t'évites les erreurs en attendant mieux.
$nom_rep = "http://padaone.info/images_upload/";
//On créer l'instance du dossier
$dir = opendir($nom_rep);
//on parcour le dossier (mais on n'a pas encore identifié de fichier)
while ($fich = readdir($dir)) {
//ensuite, là, on identifie le fichier
if(is_file($nom_rep.$fich)) {
//
//Et maintenant seulement, on peut récupérer les infos sur le fichier qui existe bien...
//mets "ceil" pour arrondir à l'entier supérieur. (1ko = 1024 octets)
$poidsKo=ceil((filesize($nom_rep.$fich))/1024);
//on récupère les dimensions du fichier (cette fois on a le bon chemin)
$dim = getimagesize($nom_rep.$fich);
//on divise par 2 pour faire vite fait une fausse miniature, juste pour l'affichage
$dimaffL = $dim[0]/2;
$dimaffH = $dim[1]/2;
//
//affichage
//
$lien_image = $site.$nom_rep.$fich;
//le ."/" après le nom de l'image ne sert à rien...
//
//attention, tu ajoutes un echo avec une balise

Nom : $fich
Taille : $poidsKo Ko
Dimension : $dim[0] x $dim[1] Px
";
}
}

Gaffe à ce que tu enlèves. Vérifie tes chemins.
J'espère ne pas avoir trop commenté. Faut dire que je pratique depuis pas longtemps. Ça me fait plaisir de pouvoir aider enfin à mon tour ;-)

A+R.
Padaone91 Messages postés 22 Date d'inscription lundi 22 mai 2006 Statut Membre Dernière intervention 20 décembre 2008
22 mai 2006 à 20:56
Voilà j'ai pris ta partie de script niamor36 et je l'ai modifié mais en fait les photos ne veulent pas s'afficher.

cf : http://padaone.info/upload.php

voilà ce que j'ai mis après le script de Bouillou2

<?php

//Identification du dossier d'image

if (!empty($pseudo));
$nom_rep = "images_upload";

//On créer l'instance du dossier

$dir = opendir($nom_rep);

//Petite fonction pour le format de date

function datef($date)

{
return date("d/m/Y H:i:s",$date);
}

//Petit titre

echo "

Vos images : ";

//boucle de lecture - affichage du dossier

while ($fich = readdir($dir)) {

//récupération de quelques infos

$poidsKo=filesize($nom_rep.$fich)/1024;
$dim = getimagesize($nom_rep.$fich);
$dimaffL = $dim[0]/2;
$dimaffH = $dim[1]/2;
$crea=datef(filectime($nom_rep.$fich));

//affichage

$lien_image = $site.$nom_rep.$fich."/";
echo "

";

echo "

Nom : $fich
Taille : $poidsKo Ko
Dimension : $dim[0] x $dim[1] Px
";

}

//On ferme l'instance du dossier

closedir($dir);

?>

Merci
niamor36 Messages postés 25 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 19 février 2010
22 mai 2006 à 17:37
En fait, je recommande ce script aux débutants. Il est bien foutu. Et relativement accessible, sauf peut-être pour la gestion mémoire, et encore... C'est pas souvent qu'on le trouve dans les script d'upload, c'est pourtant la plupart du temps indispensable.
Bonne base
Merci Bouillou2
niamor36 Messages postés 25 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 19 février 2010
22 mai 2006 à 17:28
Tout à fait d'accord avec toi Bouillou2 concernant le soucis de rendre toute les images accessibles, l'envie de garder le contrôle, et sur l'intérêt du login.
Perso, j'utilise ce genre de service uniquement pour des gestions admin de site, par avec accès privé... donc, pas vraiment de soucis concernant le contenu. Donc, voir les images peut-être un +.
D'autant que j'ai que l'affichage des images (bon d'accord, c'est un peu fait à l'arrache et c'est un peu du pipo ! j'suis au boulot...) est en fonction du pseudo et du rep correspondant.

Cela dit, je voulais juste répondre à Padaone91. Désolé si j'ai un peu corrompus l'esprit de ton code... ;o)

A ce propos Padaone91, l'idée n'a rien de compliqué. il suffit juste de rajouté les quelques lignes à la suite du code de Bouillou2.

A+R.
Padaone91 Messages postés 22 Date d'inscription lundi 22 mai 2006 Statut Membre Dernière intervention 20 décembre 2008
22 mai 2006 à 17:05
Ouah ça c'est de la reponse rapide, je me suis inscrit aujourd'hui et je ne regrette pas franchement bravo pour le temps de réaction.

Je vais regarder ce que tu propose niamor36 (ça va pas être de la tarte pour un débutant).

Ciao
cs_Bouillou2 Messages postés 11 Date d'inscription dimanche 28 mars 2004 Statut Membre Dernière intervention 31 juillet 2006
22 mai 2006 à 17:05
Hello,

Ce n'est pas mon point de vue.

Je m'explique:

Le fait de rendre directement accessible toutes les photos uploadées par vos gentils visiteurs pose à mon avis un gros problème de censure. Je pense qu'une seule petite semaine suffirait pour apercevoir une bonne grosse paire de fesse sur votre site ;o), ce qui n'est pas forcément le but.
C'est pour cela que j'ai ajouté une petite notification mail qui permet de rapidement checker les photos transmises et de les remettre en page. J'ai bien avoir la main mise sur mon site ;o)

Comme je l'ai dis plus haut, c'est ma façon d'utiliser cette application.

Une amélioration possible serait, par membre, de pouvoir visionner toutes les images uploadées. Ce qui oblige un login, ...

@+,

Bouillou
niamor36 Messages postés 25 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 19 février 2010
22 mai 2006 à 16:50
désolé des quelques fautes d'orthographe, j'ai fait ça rapide.

A+R.
niamor36 Messages postés 25 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 19 février 2010
22 mai 2006 à 16:48
La remarque de Padaone91 est juste.
Peut-être pourrions-nous rajouter quelque chose comme ça à la fin du code de Bouillou :

<? php
//
//Identification du dossier d'image
//
if (!empty($pseudo));
$nom_rep= $nom_rep."/";
//
//on créer l'instance du dossier
$dir = opendir($nom_rep);
//
//petite fonction pour le format de date
function datef($date) {
return date("d/m/Y H:i:s",$date);
}
//petit titre
echo "

Vos images : ";
//
//boucle de lecture - affichage du dossier
while ($fich = readdir($dir)) {
if(is_file($nom_rep.$fich)) {
//
//récupération de quelques infos
$poidsKo=filesize($nom_rep.$fich)/1024;
$dim = getimagesize($nom_rep.$fich);
$dimaffL = $dim[0]/2;
$dimaffH = $dim[1]/2;
$crea=datef(filectime($nom_rep.$fich));
//
//affichage
echo "

Nom : $fich
Taille : $poidsKo Ko
Dimension : $dim[0] x $dim[1] Px
Date de création : $crea"
}else{
echo "

vous n'avez pas encore envoyer d'image

";
}
}
//
//on ferme l'instance du dossier
closedir($dir);
}
?>

Faudrait tester mais il me semble que ça devrait faire l'affaire

A+R.
Padaone91 Messages postés 22 Date d'inscription lundi 22 mai 2006 Statut Membre Dernière intervention 20 décembre 2008
22 mai 2006 à 15:35
Bonjour tout le monde, je débute dans le dev et je voulais savoir comment fait on pour afficher toutes les photos que les visiteurs ont uploadé ?
Car j'ai testé le script, ça fonctionne mais les visiteurs n'ont aucun moyen de voir les photos.

Merci
niamor36 Messages postés 25 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 19 février 2010
21 mai 2006 à 13:59
Il m'est arrivé de m'inspirer de ça :
http://www.libellules.ch/testdevotrebandepassante.php
pour donner une approximation de l'upload en fonction de la connexion du client.
Momoxe a raison, Ajax sera utile. Rappelons qu'Ajax est une sorte de vieux module javascript remis au goût du jour. Et cela permet de faire vraiment des tonnes de choses. On trouve un très bon exemple (accessible) avec les "learn more" sur ces pages (une prise au hasard) :

http://store.apple.com/1-800-MY-APPLE/WebObjects/AppleStore.woa/6154000/wo/P64gITUSmoBJ3ABadPLTaA8KmjV/2.?p=0

A part ça le code commence à être jolie. C'est vrai que des code d'upload image, on en trouve pas mal. Celui-ci à quelques atouts :

- un code clair et structuré, et commenté juste ce qu'il faut.
- Une bonne gestion de la mémoire
- complet sans gadget... efficace.

Perso, j'aime pas trop faire des séries d'écho alors qu'un seul peut suffire. Mais c'est une question de goût.
J'avais noté 7 maintenat je mettrais volontier 8 :)
A+R.
momoxe Messages postés 71 Date d'inscription jeudi 18 novembre 2004 Statut Membre Dernière intervention 12 août 2006
21 mai 2006 à 09:12
Dans ce cas la, mieux vaut jouer avec Ajax et consors...
@+
cs_Bouillou2 Messages postés 11 Date d'inscription dimanche 28 mars 2004 Statut Membre Dernière intervention 31 juillet 2006
20 mai 2006 à 12:41
Bonjour,

Merci pour vos remarques constructives. Est-ce que quelqu'un aurait une idée pour pouvoir calculer la vitesse d'upload du visiteur? Afin de pouvoir estimer le temps d'upload d'une photo de 1Mb par exemple.

@+,

Bouillou
cvex Messages postés 14 Date d'inscription mercredi 10 décembre 2003 Statut Membre Dernière intervention 29 juillet 2007
16 mai 2006 à 21:26
Bonsoir,

Bon j'ai testé ton code puisque, il ma fortement interessé, malheuresement il y a une erreur dans ton script, je m'explique :
il remplace tout les caractères autres que des chiffres ou des lettres par un _ par cette inscruction :
$dest_fichier = preg_replace('/([^.a-z\/0-9]+)/i', '_', $dest_fichier);

Le tout en sachant que ça remplace aussi tous les accents et autres la : $tmp = enlever_accents($tmp);

Donc il faut enlever cette ligne surtout dans le cas ou on l'installe en local ;)

++
niamor36 Messages postés 25 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 19 février 2010
8 mai 2006 à 10:16
Très joli code. Bien strucuré, bien commenté, clair.
Pour info, nécessite GD lib 2.
Je remarque une seule erreur importante qu'on retrouve régulièrement dans ce genre de code :
Tu vérifies le type de fichier (jpg) en récupérant les 3 derniers caractères du nom. Ce qui est une double erreur. D'une part, le fichier pourrait être un "jpeg" et pourtant se faire virer. D'autre part, n'importe qui peut ajouter ".jpg" à la fin de n'importe quel fichier.
Ce qui amène une faille de sécurité potentielle. Il vaut mieux vérifier le type "mime" avec $FILE['image'],['type'].
A part ça, je n'ai pas testé mais ça m'a l'air tout à fait efficace. Un peu curieux cette gestion de la mémoire...? Y'a quand même + simple !
La police Tahoma m'a bien fait rire.

A perfectionner mais c'est une très bonne base assez complète.
Rejoignez-nous