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 :

Probleme multi upload


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 124
    Par défaut Probleme multi upload
    Bonjour, je suis actuellement bloqué sur le multi upload. Je m'explique, j'ai réussi a uploader un fichier dans le répertoire que j'ai voulu mais avec plusieurs fichiers on m'a dit qu'il fallait que je présente ma balise sous la forme : <input type="file" name="fichier[]"> mais je n'arrive pas récupérer ces données dans mon script après. J'ai utilisé un foreach.

    Partie formulaire.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    		<input type="hidden" name="MAX_FILE_SIZE" value="20971520" />
    		<br><input type="file" name="fichier" size="30"><br>
    		<br><input type="file" name="fichier2" size="30"><br>
    		<br><input type="file" name="fichier3" size="30"><br>
    		<br><input type="file" name="fichier4" size="30"><br>
    		<br><input type="reset" value="Tout annuler"><br>
    Partie upload.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
    <?php
    $dossier = 'upload/';
    $fichier = basename($_FILES['fichier']['name']);
    $taille_maxi = 20971520;
    $taille = filesize($_FILES['fichier']['tmp_name']);
    $extensions = array('.png', '.gif', '.jpg', '.jpeg', '.mp3', '.doc', '.docx', '.avi', '.txt');
    $extension = strrchr($_FILES['fichier']['name'], '.');
    //Début de la boucle des inputs
     
    //Début des vérifications de sécurité...
    if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
    {
    $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt, doc, mp3 ou encore avi';
    }
    if($taille>$taille_maxi)
    {
    $erreur = 'Le fichier est trop volumineux';
    }
    if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
    {
    //On formate le nom du fichier ici...
    $fichier = strtr($fichier,
    'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
    'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
    $fichier = date('Y-m-d-H-i-s').uniqId().$extension;
    if(move_uploaded_file($_FILES['fichier']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
    {
    echo 'Upload effectué avec succès !';
    }
    else //Sinon (la fonction renvoie FALSE).
    {
    echo 'Echec de l\'upload !';
    }
    }
    else
    {
    echo $erreur;
    }
    ?>
    Merci de votre aide

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Un exemple t'aidera sûrement à y voir plus clair:

    Coté HTML:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <form enctype="multipart/form-data" method="post" action="/axiom/fr/admin/upload" class="ui-widget">
    	<input type="file" name="files[]">
    	<input type="file" name="files[]">
    	<input type="file" name="files[]">
    	<input type="file" name="files[]">
    	<input type="file" name="files[]">
    	<input type="submit" value="Envoyer" class="ui-button ui-widget ui-state-default ui-corner-all" role="button" aria-disabled="false">
    	<input type="button" id="btnadd" value="Ajouter" class="ui-button ui-widget ui-state-default ui-corner-all" role="button" aria-disabled="false">
    </form>
    Coté 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
     
            if (isset($_FILES["files"])) {
                foreach ($_FILES["files"]["error"] as $key => $error) {
                    if ($error == UPLOAD_ERR_OK) {
                        $tmp_name = $_FILES["files"]["tmp_name"][$key];
                        $name = $_FILES["files"]["name"][$key];
                        $path = APPLICATION_PATH . "/webroot/upload/$name";
                        if (move_uploaded_file($tmp_name, $path)) {
                            self::$_response->addMessage(i18n('admin.files.upload.ok', $name), MESSAGE_WARNING);
                        }
                        else {
                            self::$_response->addMessage(i18n('admin.files.upload.nok', $name), MESSAGE_ALERT);
                        }
                    }
                }
            }

  3. #3
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    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 418
    Par défaut
    Pour info, avec les navigateurs récents et mis à jour (excepté IE 9) tu peux utiliser l'attribut "multiple" pour permettre le téléchargement multiple avec un seul champ. Avec cette option on peut sélectionner plusieurs fichiers en maintenant la touche Ctrl appuyée (il faut que les fichiers soient dans le même répertoire).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="file" name="files[]" multiple="multiple" />
    Pour le traitement c'est identique à ce qu'à indiqué Benjamin Delespierre

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 124
    Par défaut
    Merci de votre aide mais je viens de tester et ça ne marche toujours pas..

    Nouveau code :
    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
    48
    49
    50
    <html>
    	<head>
    		<title>upload</title>
    	</head>
    <body>
    <?php
    $dossier = 'upload/';
    $fichier = basename($_FILES['fichier']['name']);
    $taille_maxi = 20971520;
    $taille = filesize($_FILES['fichier']['tmp_name']);
    $extensions = array('.png', '.gif', '.jpg', '.jpeg', '.mp3', '.doc', '.docx', '.avi', '.txt');
    $extension = strrchr($_FILES['fichier']['name'], '.');
    //Début de la boucle des inputs
    if (isset($_FILES["fichier"])) {
                foreach ($_FILES["fichier"]["error"] as $key => $error) {
    //Début des vérifications de sécurité...
    if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
    {
    $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt, doc, mp3 ou encore avi';
    }
    if($taille>$taille_maxi)
    {
    $erreur = 'Le fichier est trop volumineux';
    }
    if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
    {
    //On formate le nom du fichier ici...
    $fichier = strtr($fichier,
    'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
    'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
    $fichier = uniqId().$extension;
    if(move_uploaded_file($_FILES['fichier']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
    {
    echo 'Upload effectué avec succès !';
    }
    else //Sinon (la fonction renvoie FALSE).
    {
    echo 'Echec de l\'upload !';
    }
    }
    else
    {
    echo $erreur;
    }
    }
    }
    ?>
    </body>
    </html>
    Lorsque je clique sur le bouton "submit" 3 erreurs apparaissent :
    Warning: basename() expects parameter 1 to be string, array given in C:\wamp\www\Barre de progression\upload.php on line 8
    Warning: filesize() expects parameter 1 to be string, array given in C:\wamp\www\Barre de progression\upload.php on line 10
    Warning: strrchr() expects parameter 1 to be string, array given in C:\wamp\www\Barre de progression\upload.php on line 12
    ainsi que le message :
    Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt, doc, mp3 ou encore aviVous devez uploader un fichier de type png, gif, jpg, jpeg, txt, doc, mp3 ou encore aviVous devez uploader un fichier de type png, gif, jpg, jpeg, txt, doc, mp3 ou encore aviVous devez uploader un fichier de type png, gif, jpg, jpeg, txt, doc, mp3 ou encore avi
    Pouvez-vous me dire a quoi elles correspondent ? Merci

  5. #5
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 124
    Par défaut
    Excusez-moi je suis nouveau..

    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
    48
    49
    50
    51
     
    <html>
    	<head>
    		<title>upload</title>
    	</head>
    <body>
    <?php
    $dossier = 'upload/';
    $fichier = basename($_FILES['fichier']['name']);
    $taille_maxi = 20971520;
    $taille = filesize($_FILES['fichier']['tmp_name']);
    $extensions = array('.png', '.gif', '.jpg', '.jpeg', '.mp3', '.doc', '.docx', '.avi', '.txt');
    $extension = strrchr($_FILES['fichier']['name'], '.');
    //Début de la boucle des inputs
    if (isset($_FILES["fichier"])) {
                foreach ($_FILES["fichier"]["error"] as $key => $error) {
    //Début des vérifications de sécurité...
    if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
    {
    $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt, doc, mp3 ou encore avi';
    }
    if($taille>$taille_maxi)
    {
    $erreur = 'Le fichier est trop volumineux';
    }
    if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
    {
    //On formate le nom du fichier ici...
    $fichier = strtr($fichier,
    'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
    'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
    $fichier = uniqId().$extension;
    if(move_uploaded_file($_FILES['fichier']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
    {
    echo 'Upload effectué avec succès !';
    }
    else //Sinon (la fonction renvoie FALSE).
    {
    echo 'Echec de l\'upload !';
    }
    }
    else
    {
    echo $erreur;
    }
    }
    }
    ?>
    </body>
    </html>

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

Discussions similaires

  1. [1.3.5] Probleme multi upload
    Par hellipse dans le forum Struts 1
    Réponses: 0
    Dernier message: 21/08/2008, 15h32
  2. Probleme d'upload
    Par FreshVic dans le forum Struts 1
    Réponses: 10
    Dernier message: 22/05/2006, 17h15
  3. [JSP] Problème d'upload de fichiers
    Par Ludo_xml dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 07/09/2005, 11h20
  4. [uploadfile] - Probleme pour upload
    Par ShinJava dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 13/07/2005, 12h28
  5. [Upload] probleme d upload de fichier
    Par Stef784ever dans le forum Langage
    Réponses: 7
    Dernier message: 09/05/2005, 17h45

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