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 :

Comment uploader des fichiers via formulaire en PHP


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    Janvier 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Collégien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Comment uploader des fichiers via formulaire en PHP
    Bonjour à tous,

    Je poste ce message car je poursuis actuellement un tutoriel sur PHP et je suis sur la partie upload de fichiers via un formulaire; Je fais tout pour le moment en local et mes questions tournent autour du point suivant :
    Comment uploader un fichier en PHP à partir du répertoire temporaire vers un répertoire définitif dans mon dossier var/www?

    Pour info, je suis sur ubuntu 13.10 virtualisé sous vm player.
    Je n'arrive pas à réaliser l'action MAIS je ne vois pas ce qui cloche dans mon code.

    Remarque : j'ai créé 2 fichiers dans www :
    1er fichier : fichier du formulaire de téléchargement du fichier (une image dans mon cas) appelé envoi.php :

    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
    <!DOCTYPE html>
     
    <html>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <style type="text/css"> .blue {background-color : #00FFFF} </style>
     
    <body>
        <form action="cible_envoi.php" method="post" enctype="multipart/form-data">
            <div class="blue">Formulaire d'envoi de fichier :</br>
            <input type="file" name="monfichier" /><br/>
            <input type="submit" value="Envoyer le fichier" />
            </div>
     
        </form>  
    </body>
     
    </html>


    Fichier cible_envoi.php :

    Code : 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
    <!DOCTYPE>
     
    <html>
        <head>
            <title>Test en cours</title>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        </head>
     
        <body>   
    <?php
    // Testons si le fichier a bien été envoyé et s'il n'y a pas d'erreur
     
    if (isset($_FILES['monfichier']) && $_FILES['monfichier']['error'] == 0)
    {
            //Testons si le fichier n'est pas trop gros
            if ($_FILES['monfichier']['size'] <= 1000000)
            {
                     //Testons si l'extension est autorisée
                    $infosfichier = pathinfo($_FILES['monfichier']['name']);
                    $extension_upload = $infosfichier['extension'];
                    $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
                    if (in_array($extension_upload, $extensions_autorisees))
                    {
                             //On peut valider le fichier et le stocker définitivement
                            move_uploaded_file($_FILES['monfichier']['tmp_name'], '/var/www/Tests/uploads/'. basename($_FILES['monfichier']['name']));
                            echo "L'envoi a bien été effectué !";
                    }
            else
                {
                    echo "il y'a un problème dans le deuxième if";
                }
            }
        else
        {
            echo "Il y'a un problème dans le 2 if";
        }
    }
    else
    {
        echo "Il y'a un bug dans le if initial";
    }
     
     
     
    ?>
        </body>
    </html>

    Merci d'avance pour votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
                    $extension_upload = strtolower(pathinfo($_FILES['monfichier']['name'], PATHINFO_EXTENSION));
    Un exemple : Traitement Photo : news_traiter_photo.php

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Alors c'était juste l'omission de strtolower qui posait pb (et tu essayais d'uploader un fichier avec une extension en majuscule) ?

    Sinon donnes nous plus d'info, notamment que retourne le script exactement ?

    Et en fait la condition (que tu ne fais pas) pour savoir si le fichier a correctement été uploadé c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if(move_uploaded_file(...))
    {
    echo "Le transfert a bien été effectué !";
    }
    else
    {
    echo "Echec du transfert";
    }
    Autres questions :
    - Le nom de ton fichier de destination est-il correct par rapport au système de fichier du serveur ?
    - L'adresse du fichier de destination est-elle correcte ?
    - Ton fichier ne dépasse t-il pas les directives "upload_max_filesize" et "post_max_size" du serveur (ces erreurs ne sont pas gérées par ton script) ?

    Aussi tu devrais utiliser le champ d'erreur retourné par $_FILE.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    Janvier 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Collégien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci à vous 2 pour vos précisions.
    Non ce n'était pas l'omission de strtolower qui posait problème. J'ai essayé avec les remarques de jreaux62 mais toujours la même chose ! page blanche quand j’atterris sur la page cible_envoi.php.
    J'essaye ce soir avec tes remarques ABCIWEB car là je suis au taf et malheureusement je ne peux pas programmer au taf

    J'expère que ça va marcher.
    Merci encore; je vous tiens au courant dès que ça marche.....ou non

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/01/2009, 12h58
  2. Réponses: 4
    Dernier message: 22/02/2008, 12h43
  3. Upload des fichiers via http
    Par yanis97 dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 05/04/2007, 14h01
  4. [Librairies] Comment uploader un fichier via email ?
    Par pdtor dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 09/05/2006, 11h33
  5. Uploader des fichiers via ssh
    Par Michaël dans le forum Réseau
    Réponses: 3
    Dernier message: 13/05/2005, 20h47

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