Upload vide ?

Signaler
Messages postés
24
Date d'inscription
dimanche 6 février 2005
Statut
Membre
Dernière intervention
1 novembre 2005
-
Messages postés
20
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
3 juillet 2006
-
Bonjour





J'utilise un script d'upload que j'ai trouvé sur le net et qui marche
très bien sur d'autre site néanmoins la bizarement le fichier uploadé
n'existe pas, je ne pense pas que cela vienne du script d'upload mais
dans le doute le voici :


<tt>
// DEBUT DE L'UPLOAD DE L'IMAGE...

$width_max = 50; // Largeur max de l'image en pixels

$height_max = 50; // Hauteur max de l'image en pixels

$nom=$_FILES['fichier']['name'];

$extensions_ok = array("jpg","gif","jpeg",'png');

$extension = substr($nom,-3); // Récupération de l'extension

$infos_img = getimagesize($_FILES['fichier']['tmp_name']); // taille de l'image

// infos du fichier :

echo '';

print_r($_FILES);

echo'

';

// test de toutes les erreurs :

if ($_FILES['fichier']['error']) {

switch ($_FILES['nom_du_fichier']['error']){

case
1: // UPLOAD_ERR_INI_SIZE

echo"Le
fichier dépasse la limite autorisée par le serveur (fichier php.ini)
!";

break;

case
2: // UPLOAD_ERR_FORM_SIZE

echo
"Le fichier dépasse la limite autorisée dans le formulaire HTML !";

break;

case
3: // UPLOAD_ERR_PARTIAL

echo
"L'envoi du fichier a été interrompu pendant le transfert !";

break;

case
4: // UPLOAD_ERR_NO_FILE

echo
"Le fichier que vous avez envoyé a une taille nulle !";

break;

};

} else if(!in_array(strtolower($extension),$extensions_ok)) {

echo
'Le fichier n\'est pas d\'un format valide.';

} else if(($infos_img[0] > $width_max) || ($infos_img[1] > $height_max)) {

echo
'Le fichier est trop grand en hauteur / en largeur / en poid';

} else {

$chemin_destination = '../images/persos/';

move_uploaded_file($_FILES['fichier']['tmp_name'],
$chemin_destination.$_FILES['fichier']['name']);

// FIN DE L'UPLOAD DE L'IMAGE

</tt>





Il a troujours marché mais la il ne veut pas, le champ fichier est correct et du bon nom je pense :


<tt>

</tt>


et mon formulaire porte bien le 'enctype="multipart/form-data"', je suis bien en "post", je suis chez free
mais au final, j'ai un message d'erreur généré par le script comme quoi
l'image n'est pas d'un format valide et franchement je ne voit pas d'ou
cela vient... J'ai bien essayé de tester le script sur une autre page avec le code suivant :



<?php

// DEBUT DE L'UPLOAD DE L'IMAGE...

$width_max = 50; // Largeur max de l'image en pixels

$height_max = 50; // Hauteur max de l'image en pixels

$nom=$_FILES['fichier']['name'];

$extensions_ok = array("jpg","gif","jpeg",'png');

$extension = substr($nom,-3); // Récupération de l'extension

$infos_img = getimagesize($_FILES['fichier']['tmp_name']); // taille de l'image



// infos du fichier :

echo '';

print_r($_FILES);

echo'

';

// test de toutes les erreurs :

if ($_FILES['fichier']['error']) {

switch ($_FILES['fichier']['error']){


case 1: // UPLOAD_ERR_INI_SIZE


echo"Le fichier dépasse la limite autorisée par le serveur (fichier
php.ini) !";

break;


case 2: // UPLOAD_ERR_FORM_SIZE


echo "Le fichier dépasse la limite autorisée dans le formulaire HTML !";

break;


case 3: // UPLOAD_ERR_PARTIAL


echo "L'envoi du fichier a été interrompu pendant le transfert !";

break;


case 4: // UPLOAD_ERR_NO_FILE


echo "Le fichier que vous avez envoyé a une taille nulle !";

break;

};

} else if(!in_array(strtolower($extension),$extensions_ok)) {


echo 'Le fichier n\'est pas d\'un format
valide.';

} else if(($infos_img[0] > $width_max) || ($infos_img[1] > $height_max)) {


echo 'Le fichier est trop grand en hauteur / en largeur / en poid';

} else {

$chemin_destination = '../';


move_uploaded_file($_FILES['fichier']['tmp_name'],
$chemin_destination.$_FILES['fichier']['name']);

// FIN DE L'UPLOAD DE L'IMAGE

};

?>

<form method="post" enctype="multipart/form-data" action="<?php echo $PHP_SELF; ?>">





</form>

En testant, le fichier uploadé n'est plus vide mais il me retourne cette fois ce message d'erreur :

Warning: move_uploaded_file(): Unable to access ../laugh.gif in /var/www/free.fr/3/b/hxh.believe/test.php on line 36




Quelqu'un peut m'aider parce que la je commence à deprimer ca marche pas et ca m'enerve

4 réponses

Messages postés
1352
Date d'inscription
lundi 27 octobre 2003
Statut
Membre
Dernière intervention
19 novembre 2008
1
essai dans le premier code:



changes la ligne suivante :



<tt>move_uploaded_file($_FILES['fichier']['tmp_name'],$chemin_destination.$_FILES['fichier']['name']);



par



$nomfic = </tt>
basename(
<tt>$_FILES['fichier']['name']</tt>
);


<tt>move_uploaded_file($_FILES['fichier']['tmp_name'],$chemin_destination.</tt><tt>$nomfic</tt><tt>);



@+

</tt>PS: Si votre problème est résolu, prière de bien vouloir clôturer votre message par une réponse acceptée !
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut,



plutôt que de vérifier les extensions vérifie le type mime du fichier,
car là on peut passer outre ta protection très facilement et t'envoyer
des fichiers de n'importe quel type.



Ensuite quel est l'erreur que te renvoit ton script, hormis le fait qu'il dise que tu as un fichier vide ?



Pour ce qui est des scripts d'upload je suis sûr qu'il y en a de meilleurs sur ce site, change de script ;-)



a +

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
24
Date d'inscription
dimanche 6 février 2005
Statut
Membre
Dernière intervention
1 novembre 2005

merci j'ai suivit ton conseil et en changeant de script, ca marche, je
ne sais pas d'ou ca venait exactement mais maintenant que ca marche
c'est bon ^^
Messages postés
20
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
3 juillet 2006

Accepte sa réponse alors :), ça nous évite de chercher un moyen de résoudre ton problème pour s'apercevoir ensuite qu'il est déjà résolu.