IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Upload de fichier, comment s'en dépatouiller ?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de bionicleman
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 127
    Par défaut Upload de fichier, comment s'en dépatouiller ?
    Bonjour,
    Malgrès tous les tutoriels déjà présents sur le net j'ai un soucis au niveau de mon formulaire :
    j'ai un formulaire contenant plusieurs champs <input type="text"/> et deux <form method="post" enctype="multipart/form-data"> (le premier servira à uploader un .exe, le second une image).
    Voilà mon code :

    Formulaire :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    <form method="post" action="upload.php">
                    <h1>Ajouter une création</h1>
                    <p>Il vous suffit de remplir le formulaire suivant et de le valider.<br/>
                    Tous les champs sont obligatoires, sauf indications contraires.</p><br />
                    <h1>A propos de vous</h1>
                    <table>        
                        <tr>
                            <td>Votre nom/pseudo :<br/>
                            <input type="text" name="nom" size="50"/><br/><br/>
                            </td>
                        </tr>
                        <tr>
                            <td>Votre site (optionnel) :<br/>
                            <input type="text" name="site" value="http://" size="50"/><br/>
                            <p><font size=1><i>Exemple d'URL : http://www.monsite.fr</i></font></p><br/>
                            </td>
                        </tr>
                    </table>
                    <h1>Votre logiciel</h1>
                    <table>
                        <tr>
                            <td>Nom du logiciel :<br/>
                            <input type="text" name="nomexe" size="50"/><br/><br/>
                            </td>
                        </tr>
                        <tr>
                            <td>Description :<br/>
                            <textarea name="comm" rows="10" cols="37"></textarea><br/><br/>
                            </td>
                        </tr>
                        <tr>
                            <td>Langage :<br/>
                            <input type="text" name="langage" size="50"/><br/><br/>
                            </td>
                        </tr>
                        <tr>
                            <td>Taille :<br/>
                            <input type="text" name="taille" size="50"/><br/>
                            <p><font size=1><i>La taille doit exclusivement être un nombre.</i></font></p><br/>
                            </td>
                        </tr>
                        <tr>
                            <td>Le logiciel : <br/>
                                <input type="hidden" name="MAX_FILE_SIZE" value="1000000000" >
                                <input type="file" name="log" class="parc" size="35">
                                <p><font size=1><i>Attention, vous ne pouvez uploader que des exécutables de <strong>moins de 1Mo</strong>.</i></font></p>
                                <br/>
                            </td>
                        </tr>
                        <tr>
                            <td>Image : <br/>
                                <form method="post" enctype="multipart/form-data" action="upload.php">
                                <input type="hidden" name="MAX_FILE_SIZE" value="5000000" >
                                <input type="file" name="img" class="parc" size="35"><br/>
                                <p><font size=1><i>Attention, vous ne pouvez uploader que des images de <strong>moins de 500Ko</strong> ayant une des extentions suivantes : 
                                <table>
                                    <tr>
                                        <td >.png<br/>.gif</td><td>.jpg<br/>.jpeg</td><td>.bmp<br/>.bitmap</td>
                                    </tr>
                                </table>
                                <input type="submit" name="upload" value="Uploader" class="btn"/>
                                </i></font></p>
                                <br/>
                                </form>
                            </td>
                        </tr>                                       
                    </table>
                    <table>
                        <tr>
                            <td><input type="submit" value="Envoyer" class="btn"/> <input type="reset" value="Annuler" class="btn"/></td>
                        </tr>
                    </table>
                </form>



    Et ma page Php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    <?php
     
    if( isset($_POST['upload']) ) // si formulaire soumis
    {
        $content_dir = 'images/'; // dossier où sera déplacé le fichier
     
        $tmp_file = $_FILES['img']['tmp_name'];
     
        if( !is_uploaded_file($tmp_file) )
        {
            exit("L'image est introuvable, veuillez réessayer");
        }
     
        // on vérifie maintenant l'extension
        $type_file = $_FILES['img']['type'];
     
        if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') )
        {
            exit("Le fichier n'est pas une image valide ou le format n'est peut-être pas pris en compte.<br/>
                  Veuillez vous référer à la page précédente pour savoir les formats d'images pris en chage.");
        }
     
        // on copie le fichier dans le dossier de destination
        $name_file = $_FILES['img']['name'];
     
        if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
        {
            exit("Impossible de copier l'image. Veuillez réessayer.");
        }
     
        echo "Le fichier a bien été uploadé";
    }
     
    ?>


    Le fichier PHP est pour l'instant basique, je voudrais faire marcher l'upload avant de le peaufiner.

    J'ai une erreur lors de la validation de mon formulaire, à la ligne :
    Code php :
    $tmp_file = $_FILES['img']['tmp_name'];


    Notice: Undefined index: img in c:\program files\easyphp-modgsi\www\site perso\upload.php on line 7
    L'image est introuvable, veuillez réessayer
    Voilà, je ne sais plus que faire.
    Un peu d'aide sera la bien venue
    Merci d'avance !

  2. #2
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    Bonjour,
    Dans un premier temps tu ne dois pas imbriquer des formulaires les uns dans les autres.
    Modifie déjà ton code à ce niveau ...
    Tu as également deux champs qui porte le même nom : name="MAX_FILE_SIZE" ...

  3. #3
    Membre confirmé Avatar de bionicleman
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 127
    Par défaut
    Merci de cette réponse,
    j'ai modifié mon code comme tu me l'as dit :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    <form method="post" action="upload.php">
                    <h1>Ajouter une création</h1>
                    <p>Il vous suffit de remplir le formulaire suivant et de le valider.<br/>
                    Tous les champs sont obligatoires, sauf indications contraires.</p><br />
                    <h1>A propos de vous</h1>
                    <table>        
                        <tr>
                            <td>Votre nom/pseudo :<br/>
                            <input type="text" name="nom" size="50"/><br/><br/>
                            </td>
                        </tr>
                        <tr>
                            <td>Votre site (optionnel) :<br/>
                            <input type="text" name="site" value="http://" size="50"/><br/>
                            <p><font size=1><i>Exemple d'URL : http://www.monsite.fr</i></font></p><br/>
                            </td>
                        </tr>
                    </table>
                    <h1>Votre logiciel</h1>
                    <table>
                        <tr>
                            <td>Nom du logiciel :<br/>
                            <input type="text" name="nomexe" size="50"/><br/><br/>
                            </td>
                        </tr>
                        <tr>
                            <td>Description :<br/>
                            <textarea name="comm" rows="10" cols="37"></textarea><br/><br/>
                            </td>
                        </tr>
                        <tr>
                            <td>Langage :<br/>
                            <input type="text" name="langage" size="50"/><br/><br/>
                            </td>
                        </tr>
                        <tr>
                            <td>Taille :<br/>
                            <input type="text" name="taille" size="50"/><br/>
                            <p><font size=1><i>La taille doit exclusivement être un nombre.</i></font></p><br/>
                            </td>
                        </tr>
                        <tr>
                            <td>Le logiciel : <br/>
                                <input type="hidden" name="MAX_FILE_SIZE" value="1000000000" >
                                <input type="file" name="log" class="parc" size="35">
                                <p><font size=1><i>Attention, vous ne pouvez uploader que des exécutables de <strong>moins de 1Mo</strong>.</i></font></p>
                                <br/>
                            </td>
                        </tr>
                        <tr>
                            <td>Image : <br/>
                                <input type="hidden" name="MAX_FILE_SIZE" value="5000000" >
                                <input type="file" name="img" class="parc" size="35"><br/>
                                <p><font size=1><i>Attention, vous ne pouvez uploader que des images de <strong>moins de 500Ko</strong> ayant une des extentions suivantes : 
                                <table>
                                    <tr>
                                        <td >.png<br/>.gif</td><td>.jpg<br/>.jpeg</td><td>.bmp<br/>.bitmap</td>
                                    </tr>
                                </table>
                                </i></font></p>
                                <br/>
                            </td>
                        </tr>                                       
                    </table>
                    <table>
                        <tr>
                            <td><input type="submit" value="Envoyer" name="valider" class="btn"/> <input type="reset" value="Annuler" class="btn"/></td>
                        </tr>
                    </table>
                </form>
    Ma page PHP n'a pas changé si ce n'est la premiere ligne :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    if( isset($_POST['valider']) ) // si formulaire soumis

    D'après mes tests, c'est l'entrée $_FILES qui pose soucis, car, j'ai une erreur toutes les fois où celle-ci est appelée.

  4. #4
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    Bonsoir,
    Tu dois modifier ta balise <form> comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form method="post" action="upload.php" enctype="multipart/form-data">
    Modifie également tes deux noms identiques pour les champs "MAX_FILE_SIZE"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type="hidden" name="MAX_FILE_SIZE_LOG" value="1000000000" >
    <input type="hidden" name="MAX_FILE_SIZE_IMG" value="5000000" >
    A modifier également dans tes requètes SQL.

    Tu devrais également créer un champs caché à côté de ton bouton "Valider" et plutot faire le test (isset) sur celui-ci et non sur le bouton.
    Vérification de l'envoi d'un formulaire par son bouton non fiable

  5. #5
    Membre confirmé Avatar de bionicleman
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 127
    Par défaut
    Bonjour !
    Merci beaucoup jumano, ton aide m'a été précieuse !
    Mon upload marche totalement maintenant
    Merci encore ! ++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/09/2007, 10h09
  2. Réponses: 3
    Dernier message: 22/06/2006, 00h23
  3. [Librairies] Comment uploader un fichier via email ?
    Par pdtor dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 09/05/2006, 12h33
  4. comment uploader un fichier ?
    Par cb68 dans le forum Web
    Réponses: 1
    Dernier message: 08/10/2005, 14h06
  5. [FTP] Comment uploader un fichier d'un répertoire à l'autre ?
    Par Devil666 dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 08/07/2005, 10h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo