Page 1 sur 1

Problème d'upload

Posté : 08 juin 2006, 17:09
par bucheron
Bonjour,

j'ai un petit problème d'upoad dont je ne connais pas la solution.
J'ai utiliser le script http://www.phpfrance.com/tutoriaux/inde ... e-fichiers pour vérifier si l'image à uploader est correcte.

jusque la pas de souci :D .

But...

je travaille en local et je pense que c'est la config du fichier php.ini qui faut toucher mais je ne sais pas comment faire.

je vous met mes 2 messages d'erreur :

Code : Tout sélectionner

Warning: move_uploaded_file(/UserFiles/logo/050416153847_66.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\php\www\casino\db.class.php on line 210 Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'c:/php/tmp\php24B.tmp' to '/UserFiles/logo/050416153847_66.jpg' in C:\php\www\casino\db.class.php on line 210 /UserFiles/logo/050416153847_66.jpg
voila si vous avez des idées .....

merci

Posté : 08 juin 2006, 17:21
par mere-teresa
La plupart des erreurs de file upload viennent des droits mal paramétrés.

Posté : 08 juin 2006, 17:45
par Ryle
... ou d'un problème de chemin mal défini ;)

Tu donnes un chemin pour retrouver ton fichier relatif à la racine : /UserFiles/logo/050416153847_66.jpg

Il te manque soit un point devant le slash pour dire que tu pars du dossier contenant le script (./) ou supprimer le premier slash (ce qui revient au même que précédement) ou enfin (mais c'est pas terrible) mettre un chemin absolu à partir de C:/... :)

Posté : 08 juin 2006, 18:13
par bucheron
en fait j'utilise les chemins absolus.
Mais je pense qu'il y a un pb du nom temporaire.
Mais celui ci ce n'est pas moi qui le définit donc je ne sais pas comment faire.

Je ne pense pas que c'est les droits mais sais tu comment et ou se trouve le fichier temporaire par défaut ou apache met les fichiers .

voici la fonction que j'utilise pour L'upload des images.
Je lui passe en argument le $_FILE récupérer :

Code : Tout sélectionner

//fonction qui vérifie la validité d'une image function analyseImg($file_img){ global $rep_img_logo; unset($erreur); $extensions_ok = array('png', 'gif', 'jpg', 'jpeg'); $taille_max = 200000; $dest_dossier = $rep_img_logo; // utilisez également des slashes sous windows : $dest_dossier = 'd:/damien/photos/'; // vérifications if( !in_array( substr(strrchr($file_img['name'], '.'), 1), $extensions_ok ) ){ $erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !'; } else if( file_exists($file_img['tmp_name']) && filesize($file_img['tmp_name']) > $taille_max) { $erreur = 'Votre fichier doit faire moins de 500Ko !'; } // copie du fichier if( !isset($erreur) ){ $dest_fichier = basename($file_img['name']); // formatage nom fichier // enlever les accents $dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); // remplacer les caracteres autres que lettres, chiffres et point par _ $dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier); // copie du fichier move_uploaded_file($file_img['tmp_name'], $dest_dossier.$dest_fichier); return array("estValide" => true, "mess" => $dest_dossier.$dest_fichier); } return array("estValide" => false, "mess" => $erreur); }

Posté : 08 juin 2006, 19:37
par Ryle
Si tu utilises des chemins absolu, vu qu'apparement tu es sous windows, il te manque le lecteur dans ton chemin (C:\...). Il faut distinguer les chemins absolus "URL" où la racine correspond à la racine de ton site, et les chemins absolus "fichiers physique" où la racine est celle de ton disque :)

regarde du côté de la variable $rep_img_logo :)

Posté : 09 juin 2006, 09:54
par bucheron
je vois...
imaginons je dit que ce la se trouve a l'adresse c:/ ....

Mais une fois que je vais uploader les fichiers sur le serveur ca ne va plus marcher ??? non ?

Posté : 09 juin 2006, 11:32
par mere-teresa
C'est pour cela qu'on conseille les chemins relatifs !