Souci d'upload

Eléphant du PHP | 109 Messages

15 mars 2010, 15:56

Bonjour,

en ce bel après midi, je m'ennuyais, donc j'ai décidé de coder un peu. (chacun ses passes-temps 8-))
Bref, j'ai fait un script qui a pour but d'uploader une image(pas très grosse) sur mon espace web. Easy-win allez vous me dire? Et bien j'ai rencontré des problèmes quand même. :(
Voici le formulaire html (version light, pour vous simplifier la lecture) :
<form action="upload_img.php" method="post">

     <input type="file" name="img">
     <input type="text" name="titre">
     <textarea name="description"></textarea>

     <input type="submit" name="submit" value="Envoyer">
</form>
Et voici se que vous attendez tous ! Le script d'upload :
<?php

if(isset($_POST['titre']) && isset($_POST['description']) && isset($_FILES['img']))
{
    $content_dir = '../upload/images/'; 

    $tmp_file = $_FILES['img']['tmp_name'];

    if(!is_uploaded_file($tmp_file))
    {
        exit("1");
    }

    $extensions = array('.png', '.gif', '.jpg', '.jpeg'); 	
    $extension = strrchr($_FILES['img']['name'], '.');
	
    if(!in_array($extension, $extensions)) 
    {
       exit("2");
    }

    $name_file = $_FILES['img']['name'];

    if(!move_uploaded_file($tmp_file, $content_dir . $name_file))
    {
        exit('Impossible de copier le fichier dans ' . $content_dir);
    }

    echo "Le fichier a bien été uploadé";
}
else
{
    echo 'Aucun fichier';
}

?>
Script assez simple et pourtant, voici la réponse :
Aucun fichier
J'ai rempli tous les champs et mis une image PNG.
Que s'est-il passé? tel est la question...

Merci d'avance :D
ANSI <font> <font> <font> <li> <p> <title> Mar I/O .NET

ViPHP
ViPHP | 5462 Messages

15 mars 2010, 16:03

enctype="multipart/form-data"

ViPHP
ViPHP | 1136 Messages

15 mars 2010, 16:16

Pour compléter la réponse de stealth35 qui selon moi est un peu lége , dans la balise <form > , il faut préciser l'enctype, c'est à dire le type du contenu envoyé au serveur lorsque l'attribut "method" vaut "post".

qui est donc "multipart/form-data"

ce qui donnera au finale :
<form action="upload_img.php" method="post" enctype="multipart/form-data" >
Pas mal de tuto la dessus ,

http://antoine-herault.developpez.com/t ... hp/upload/

Bonne continuation ,

Ch .
Modifié en dernier par stopher le 15 mars 2010, 16:22, modifié 1 fois.

ViPHP
ViPHP | 5462 Messages

15 mars 2010, 16:20

il faut préciser l'enctype, c'est à dire le type d'encodage du fichier.
c'est pas du fichier, mais du formulaire

ViPHP
ViPHP | 1136 Messages

15 mars 2010, 16:23

Corrigé :wink:

Eléphant du PHP | 109 Messages

15 mars 2010, 17:16

Ok, merci à vous deux.
J'ignorais que l'enctype était obligatoire. A vrai dire, j'ignorais à quoi il servait.

Bref, sujet résolu. :D
ANSI <font> <font> <font> <li> <p> <title> Mar I/O .NET

ViPHP
ViPHP | 2287 Messages

15 mars 2010, 20:38

Ok, merci à vous deux.
J'ignorais que l'enctype était obligatoire. A vrai dire, j'ignorais à quoi il servait.

Bref, sujet résolu. :D
Obligatoire si tu as un input type file, bref si tu veux envoyer un fichier via le formulaire ;)

@+
if(!@work()){ Nespresso(); } else { what(); }
______________________________