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 :

multi upload d'image


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Par défaut multi upload d'image
    Bonjour,
    j'ai un script qui me sert à envoyer sur le serveur une image, celui ci est associé à un formulaire avec lequel j'entre d'autres données dans une table

    ça marche bien mais mon problème c'est que j'aimerais pouvoir envoyer plusieurs images , je ne sait pas comment insérer une boucle pour me permettre
    de faire ça. De plus j'aimerai limiter le nombre d'image à 3.

    le formulaire
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form  method="post" action="#"enctype="multipart/form-data">                     
        <label class="col-lg-3 control-label">Titre</label>
        <input type="text" name="titrearticle" placeholder="Entrez un titre"/>
        <input type="file" name="fileToUpload" id="fileToUpload">
    </form>

    la partie du script qui gère l'upload

    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
    52
    53
    $target_dir = "catalogue/";
    //$target_file = $target_dir .basename($_FILES["fileToUpload"]["name"]);
    $fichierimage = basename($_FILES["fileToUpload"]["name"]);
    //remplacement lettres accentuées par équivalent
    $fichierimage= strtr($fichierimage,
    'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
    'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    //n'autorise que les lettres et les chiffres et les caractères '_' et '-'; remplace tous les autres caractères par '-'
    $fichierimage = preg_replace('/([^.a-z0-9_-]+)/i', '-', $fichierimage);
     
    $fichierimage = $image."_article_".$fichierimage ;
    $target_file = $target_dir.$fichierimage;
     
    $uploadOk = 1;
    $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
    // Check if image file is a actual image or fake image
    if(isset($_POST["submit"])) {
        $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
        if($check !== false) {
            echo "Fichier image - " . $check["mime"] . ".";
            $uploadOk = 1;
        } else {
            echo "Ce fichier n'est pas une image.";
            $uploadOk = 0;
        }
    }
    // Check if file already exists
    if (file_exists($target_file)) {
        echo "<br>Sorry, ce fichier existe déja.";
        $uploadOk = 0;
    }
    // Check file size
    if ($_FILES["fileToUpload"]["size"] > 500000) {
        echo "Désolé, votre image est trop lourde.";
        $uploadOk = 0;
    }
    // Allow certain file formats
    if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
    && $imageFileType != "gif" ) {
        echo "<br>désolé, seul les formats JPG, JPEG, PNG & GIF sont acceptés.";
        $uploadOk = 0;
    }
    // Check if $uploadOk is set to 0 by an error
    if ($uploadOk == 0) {
        echo "<br>Désolé, le fichier n'a pas été envoyé.";
    // if everything is ok, try to upload file
    } else {
        if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
            echo "<br>Le Fichier ". basename( $_FILES["fileToUpload"]["name"]). " a été envoyé.";
        } else {
            echo "Désolé, erreur de téléchargement.";
        }
    }
    merci de votre aide

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Par défaut
    j'ai vraiment du mal à trouver une solution

    avant d'abandonner et de me diriger vers d'autres solution si quelqu'un pouvait me donner des pistes ça serait super

  3. #3
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    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 420
    Par défaut
    Salut,

    Il y a deux solutions d'upload qui supporte le téléchargement multiple que tu peux télécharger sur ce forum.

    - Une 100% php que tu peux trouver ici

    - Une autre utilisant ajax/php qui permet en plus de surpasser les configurations serveur et de renvoyer des informations en temps réel que tu peux trouver ici.

    La dernière solution serait plus adaptée pour l'upload multiple car en cas de problème durant l'upload les images déjà chargées ne sont pas perdues et en plus on peut faire une reprise de téléchargement pour les gros fichiers interrompus volontairement ou pas. On peut aussi prévisualiser les images avant et pendant le téléchargement de même qu'annuler certains fichiers. Et il n'y a aucune limite de taille ni de nombre.

    Cela dit cette deuxième solution est un peu plus longue à mettre en place que la première (plus de possibilités de configuration). Si tes images ne sont pas trop lourdes et/ou trop nombreuses tu pourrais te servir de la première. Les deux sont fournies dans un dossier de test préconfiguré et prêt à l'emploi.

    Je te répond pas sur ton code car c'est assez fastidieux. Si tu veux le faire toi-même tu auras des réponses en rentrant 'tuto upload multiple php' dans un moteur de recherche, il y a aussi la doc ici.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Par défaut
    Merci ABCIWEB
    j'avais déjà regardé ces deux sources , très intéressantes. Je pense les re regarder à nouveau

    le script sur lequel je me base est celui qu'on trouve sur www.w3schools. il marche bien , j'ai juste ajouté un formatage du nom de fichier ( strtr et preg_replace )

    Finalement j'ai opté pour une solution de sauvage , c'est à dire que j'ai dupliqué le script ( juste gardé les partie communes ) 3 fois en changeant le nom de la variable de formulaire du champ de type file ( que j'ai également dupliqué ).

    ça envoie bien les 3 images sur le serveur , et je récupère bien les nom de fichiers dans la table. Je pense optimiser le fichier plus tard car ça peut être franchement plus élégant comme script.. mais ça marche !!

  5. #5
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    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 420
    Par défaut
    Oui y'aurait fallut utiliser un tableau et une fonction.

    Si c'est un exercice pour t'amuser à apprendre comment ne pas faire, c'est réussi mais si c'est pour faire un site et que le reste du code est à l'avenant, ça fait peur. Dans ce cas faudrait faire plus de tutos avant de coder sinon il y aura tellement de choses à optimiser sur ton site que le plus simple sera de tout refaire.

    Par ailleurs je crois pas que ton script gère les erreurs de dépassement de la config serveur donc si tu mets un gros fichier tu risque de te retrouver devant une page blanche et sans message d'explication car le test sur file size ne fonctionnera pas.

    Je ne dis pas tout ça pour être vexant, c'est juste que ce n'est pas une bonne idée de vouloir avancer coute que coute. Au final tu auras un truc bancal, non évolutif, et en plus tu n'auras rien appris ou très peu, pire encore si tu prends de mauvaises habitudes...

Discussions similaires

  1. [2.x] multi upload image avec symfony2
    Par echef dans le forum Symfony
    Réponses: 3
    Dernier message: 25/06/2013, 16h39
  2. [Upload] Upload d'image....
    Par tochbee dans le forum Langage
    Réponses: 3
    Dernier message: 21/11/2005, 11h44
  3. [Upload] Multi upload sur un serveur
    Par krak70 dans le forum Langage
    Réponses: 3
    Dernier message: 07/10/2005, 12h44
  4. [Debutant] [JSP/Servlet] Upload d'image vers le serveur
    Par ShinJava dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 05/07/2005, 17h42
  5. Upload d'images sur le forum
    Par KibitO dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 2
    Dernier message: 09/10/2004, 23h18

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