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

JavaScript Discussion :

Récupérer informations de champs file grâce à Javascript


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2007
    Messages : 72
    Points : 36
    Points
    36
    Par défaut Récupérer informations de champs file grâce à Javascript
    Bonjour,

    Je suis en train de développer un site Web en PHP contenant des formulaires. Je passe les valeurs entrées par l'utilisateur dans une page javascript qui passe ces valeurs grâce à ajax à une autre page PHP qui test les valeurs pour les afficher ensuite en temps réel sans devoir réactualiser toute la page.

    Cela fonctionne parfaitement. Le problème est que j'aimerais maintenant pouvoir également tester des champs "file".

    Voici comment est appelée la fonction permettant ensuite d'envoyer les informations par ajax :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onsubmit = "traitement_formulaire('nom[=]'+this.nom.value+'[;]image_name[=]'+this.image.value);"
    Le code "this.image.value" renvoi le nom du fichier uploadé. Ma question est en fait toute simple : Comment récupérer les autres informations sur l'image ? Surtout "tmp_name" pour savoir où est stockée l'image et quel est son nom.

    Merci beaucoup d'avance !

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 643
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    dans le principe tu ne peux recupérer que le nom du fichier ...
    pas son path
    javascript ne gère pas les fichiers et doit avoir le moins d'accès possible au système.

    sur certains navigateurs js permet de recupérer le path complet, mais à tort.

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Surtout "tmp_name" pour savoir où est stockée l'image et quel est son nom.
    C'est heureusement impossible !
    JavaScript n'a pas accès au système de fichiers.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2007
    Messages : 72
    Points : 36
    Points
    36
    Par défaut
    Merci beaucoup pour vos réponses !

    Je suis donc obligé de passer par PHP pour récupérer tmp_name ?

    Ne puis-je pas utiliser ma fonction javascript pour valider le formulaire ?

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 643
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    non js peut recupérer le nom du fichier mais pas son path

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2007
    Messages : 72
    Points : 36
    Points
    36
    Par défaut
    Je suis encore un peu débutant en js, alors est-ce qu'il existe un moyen de transmettre les autres informations dans le formulaire (en l'occurrence ici juste le nom du fichier (et donc son extension)) et de trouver le tmp_name avec PHP ? ....

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Il ne peut y avoir d'envoi de fichier que par soumission de formulaire. Or s'il n'y a pas d'envoi de fichier, il ne peut pas y avoir de tmp_name.

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 643
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    php recupère les information relative au fichier et ce coté serveur donc pas d'information sur son path coté client .

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2007
    Messages : 72
    Points : 36
    Points
    36
    Par défaut
    Ok. Parfait. Merci pour vos réponses. Ça me parait logique, en plus. Comme ça, je suis fixé.

    Je vient justement de faire le test en soumettant le formulaire et j'ai une question qui je pense est toute bête : La variable "$_POST['image']['tmp_name']" ne me renvoi uniquement la première lettre du fichier sélectionné. Pourquoi ??

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2007
    Messages : 72
    Points : 36
    Points
    36
    Par défaut
    Je vous transmet juste le code html de mon formulaire (créé grâce à une classe php) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <form method="post" action="traitement_image_manager.php" id="image_manager" enctype="application/x-www-form-urlencoded" accept-charset="unknown" >
    <label style="margin: 5px;" ><strong>Nom de l image</strong></label><br />
    <input size=71 type="text" id="nom" name="nom" /><br /><br />
    <label style="margin: 5px;" ><strong>L'image</strong></label><br />
    <input size=71 type="file" id="image" name="image" /><br /><br />
    <input size=71 type="submit" id="envoi" name="envoi" value="Envoyer l'image" />
    </form>
    Et sur la page "traitement_image_manager", je fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $_POST['image']['tmp_name'];
    Et je n'ai que la première de mon fichier qui est affichée....

  11. #11
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 643
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    essaye plutot dans

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2007
    Messages : 72
    Points : 36
    Points
    36
    Par défaut
    Il me dit :

    Notice: Undefined index: image


    Si je fais : Il m'affiche :

    Array ( )

  13. #13
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 643
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    enctype="application/x-www-form-urlencoded"
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    enctype = "multipart/form-data"

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2007
    Messages : 72
    Points : 36
    Points
    36
    Par défaut
    Si je fais :

    Il m'affiche :

    Array ( [nom] => test [image] => cart.gif [envoi] => Envoyer l'image )

  15. #15
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 643
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    c'est pas le post c'est files
    et l'enctype doit permettre l'envoi de fichiers

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2007
    Messages : 72
    Points : 36
    Points
    36
    Par défaut
    Excuse-moi, je n'avais pas vu ta réponse.

    Mais j'ai remplacé comme tu dis, et je ne vois malheureusement pas de changement.

    EDTIT : STOOOOOOOP ! Ça marche...

  17. #17
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 643
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    enlève le size sur le champs input ...

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2007
    Messages : 72
    Points : 36
    Points
    36
    Par défaut
    On fait que de poster en même temps !

    Tu m'as l'air de bien maîtriser, BRAVO !!

    Il fallait effectivement utiliser : "multipart/form-data" pour que le tableau "_FILES" existe.

    Merci beaucoup !

    Par contre, le fichier n'a pas l'aire d'exister où le système me dit....

    C:\wamp\tmp\php2EB5.tmp

  19. #19
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 643
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    non il n'existe que temporairement comme son nom l'indique et en fichier caché

  20. #20
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2007
    Messages : 72
    Points : 36
    Points
    36
    Par défaut
    Yep ! Merci encore. J'ai terminé le formulaire. Ça marche parfaitement !

    Je met le sujet en "résolu".

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

Discussions similaires

  1. Comment récupérer les champs FILE d'une page web
    Par opiece dans le forum Struts 1
    Réponses: 1
    Dernier message: 20/03/2008, 10h35
  2. [Upload] Récupérer deux champs "file"
    Par MikeV dans le forum Langage
    Réponses: 2
    Dernier message: 16/10/2007, 17h09
  3. Récupérer un champ file dans un formulaire
    Par dedel53 dans le forum Langage
    Réponses: 3
    Dernier message: 20/03/2007, 11h05
  4. verification du champ file en javascript
    Par dedel53 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/03/2007, 14h53
  5. récupérer les valeur d'un champ FILE
    Par dj-julio dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/12/2005, 11h54

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