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

jQuery Discussion :

Script multi upload


Sujet :

jQuery

  1. #1
    Invité
    Invité(e)
    Par défaut Script multi upload
    Bonjour,
    J'ai trouvé un super pluging pour faire du multi-upload et plus encore (Voir le pluging).
    Le problème que je rencontre est que l'upload du fichier se fait par le script jquery, donc si je valide mon formulaire je n'est rien dans la variable $_FILES.
    Comme j'ai besoin d'informations provenant de $_FILES pour le traitement de mon formulaire, j'aimerai savoir si qq sais comment pour récupérer ces infos qui sont passer en Json.

    Merci

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 328
    Par défaut
    Dans l'exemple sur leur site, c'est bien dans $_FILES que les données sont récupérées


    Tu as essayé de partir de leur exemple brut ? Ce comportement viens probablement d'ailleurs dans ton code (genre les fichiers ne sont pas vraiment envoyés)

  3. #3
    Invité
    Invité(e)
    Par défaut
    oui j'ai installé leur démo sur mon serveur pour tester, mais dans leur démo il n'y a pas de bouton valider comme dans mon formulaire.
    Quant tu fais un submit, il n'y a rien dans le $_FILES c'est traité avant avec Jquery.

    Dans mon cas, quand tu valides le formulaire le fichier est mis en pièce jointe d'un mail.
    Mais si le fichier est trop gros, c'est un lien de téléchargement qui est ajouté dans le corps du message.

    Donc tu comprends pourquoi il me faut les infos de $_FILES.
    Mais si je pouvais avoir au moins le nom du fichier, je pourrais uniquement mettre un lien dans le mail. se serait plus simple.

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 328
    Par défaut
    Ha, si je comprends bien tu as placé le plugin sur la page mais tu n'utilise pas les fonctions du plugin pour envoyer les fichiers

    j'ai bon ?


    dans ce cas, je pense qu'il faudrait que tu applique une fonction à la validation du formulaire qui va envoyer les fichiers, attendre la réponse, puis si tout va bien envoyer les autres données de ton formulaire

  5. #5
    Invité
    Invité(e)
    Par défaut
    Quand je sélectionne les fichiers ils sont automatiquement uploadés.
    Donc le pluging fonctionne bien. C'est juste qu'il n'y a rien d'un l'input file car le traitement est fait en ajax.
    Je vois bien dans firebug l'appel ajax et les infos $_FILES, mais cela ne vient pas du formulaire

  6. #6
    Membre chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 328
    Par défaut
    Je crois que cette fois j'ai compris ton problème... En gros tu télécharge avec le upload.php basique fourni avec le plugin, mais ton formulaire cible autre chose.

    Il est effectivement normal que tu n'ai rien dans $_FILES vu que tu as déjà téléchargé le fichier (et que $_FILES sers à télécharger)

    Quelles informations désire tu avoir précisément ?

    Tu as plusieurs possibilités :
    - la possibilité de récupérer certaines infos avant le téléchargement dans la fonction add du plugin (par exemple en les insérant dans un champ caché),
    - mettre quelque chose dans le upload.php à la récupération des fichiers (si tu veux faire une action à ce moment là)
    - récupérer des infos quand le résultat est envoyé (cf. fonction progress de la doc, faire quelque chose quand progress est égal à 100)


    Par contre tu ne pourra pas avoir les infos du $_FILES dans un script différent

    PS : tu as le tableau des fichiers accessibles dans data.files dans les fonctions du plugin

    exemple :
    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
     
        $('#upload').fileupload({
     
            // This element will accept file drag/drop uploading
            dropZone: $('#drop'),
     
            // This function is called when a file is added to the queue;
            // either via the browse button, or via drag/drop:
            add: function (e, data) {
                    ...
            },
     
            progress: function(e, data){
     
                // Calculate the completion percentage of the upload
                var progress = parseInt(data.loaded / data.total * 100, 10);
     
                // Update the hidden input field and trigger a change
                // so that the jQuery knob plugin knows to update the dial
                data.context.find('input').val(progress).change();
     
                if(progress == 100){
                    data.context.removeClass('working');
    		console.log(data.files) ;// LE TABLEAU DES FICHIERS
    		console.log(data.files[0].name) ; //LE NOM DU PREMIER FICHIER
                }
            },
     
            fail:function(e, data){
                // Something has gone wrong!
                data.context.addClass('error');
            }
     
        });

  7. #7
    Invité
    Invité(e)
    Par défaut
    Merci infiniment d'avoir pris le temps de regarder.
    Bien que je comprenne se que tu dis cela dépasse mes compétences Jquery.
    J'ai bien regardé dans la doc, mais faut dire qu'elle est très riche et je ne comprend pas tout.

    Les infos dont j'ai besoin sont les noms et poids des fichiers uploader.
    Les noms car ils seront rajouter dans le corps du mail.
    Les poids car en fonction du poids total soit je met les fichiers en PJ soit je rajoute dans le mail un lien de téléchargement.

    Donc comment récupérer dans une variable php les infos provenant de (console.log(data.files)) ?
    Dés que cela sera dans une variable je devrait pouvoir m'en sortir.

    Je sais pas comment faire mais ne serait il pas possible de transmettre le tableaux de tous les fichiers chargé dans un input hidden que je traiterait au submit ?

    Je poursuit mes tests et dans la même idée : j'ai donc rajouter un input avec un id="val" dans mon formulaire.
    J'ai aussi rajouté dans le script : $('#val').val(data.files);
    Le pb est que dans l'input j'ai la valeur : [object File]
    Dernière modification par Invité ; 28/06/2013 à 13h52.

  8. #8
    Membre chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 328
    Par défaut
    tu es sur la bonne voie (enfin sur une des bonnes voies), sauf que data.files te donne un tableau de fichier

    ce que tu peux faire pour ton input, c'est utiliser le format type json

    ce qui donnerais quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [{"name":"nomdufichier1.png","size":"26354"},{"name":"nomdufichier2.png","size":"296324"}]
    pourquoi ce format ? parce que c'est celui utilisa par défaut par javascript :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var txtValue = JSON.stringify(data.files) ;
    Et php possède une fonction json_decode qui te donnera un objet php

  9. #9
    Invité
    Invité(e)
    Par défaut
    J'ai dû me tromper quelque part car j'ai fait cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var txtValue = JSON.stringify(data.files) ;
    $('#val').val(txtValue);
    Mais le résultat retourné est [{}]

  10. #10
    Membre chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 328
    Par défaut
    toujours en partant du plugin de base :
    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
     
     
            progress: function(e, data){
     
                // Calculate the completion percentage of the upload
                var progress = parseInt(data.loaded / data.total * 100, 10);
     
                // Update the hidden input field and trigger a change
                // so that the jQuery knob plugin knows to update the dial
                data.context.find('input').val(progress).change();
     
                if(progress == 100){
    				console.log(data) ;// LE TABLEAU DES FICHIERS
    				console.log(data.files) ;// LE TABLEAU DES FICHIERS
    				console.log(data.files[0].name) ; //LE NOM DU PREMIER FICHIER
    				console.log(JSON.stringify(data.files)) ; //LE NOM DU PREMIER FICHIER
                    data.context.removeClass('working');
                }
            },
    ça ça fonctionne, on a bien les infos dans la console, après dans ton cas je ne sais pas ce qui va pas

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

Discussions similaires

  1. [Upload] Php : script d'Upload vers mon site : Big Probleme
    Par CyberTwister dans le forum Langage
    Réponses: 8
    Dernier message: 27/03/2006, 08h06
  2. [Upload] Modifier ce script... (script d'upload)
    Par CyberTwister dans le forum Langage
    Réponses: 4
    Dernier message: 21/02/2006, 09h54
  3. [MySQL] Vérification de l'inexistence d'un fichier dans ma table pour un script d'upload
    Par vincedjs dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 14/02/2006, 16h35
  4. [Upload] Souci avec un script d'upload
    Par Ludo75 dans le forum Langage
    Réponses: 2
    Dernier message: 17/01/2006, 14h16
  5. [Upload] Multi upload sur un serveur
    Par krak70 dans le forum Langage
    Réponses: 3
    Dernier message: 07/10/2005, 12h44

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