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 :

[PHP-JS] Conserver les données d'un INPUT type="file"


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de zoidy
    Inscrit en
    Avril 2006
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 184
    Par défaut [PHP-JS] Conserver les données d'un INPUT type="file"
    Salut à tous,

    J'ai besoin de vos lumières pour résoudre un petit problème tout simple (et dont je n'ai toujours pas trouvé la solution... oh le boulet ^^)

    Voilà, j'ai créé un formulaire et dedans s'y trouve un <INPUT type="file" ...> pour uploader une image.
    Jusque là tout va bien, mais si l'utilisateur fait une erreur lors la saisie, le formulaire se recharge avec les données précédemment saisies sauf pour cet <INPUT type="file" ...> !!!


    Pour les <INPUT type="text" ...>, il suffit de mettre par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <INPUT type="text" name="nom" size="35" value="<? if(isset($_POST['nom'])){echo $_POST['nom'];} ?>">

    Mais pour les <INPUT type="file" ...>, ce code ne marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <INPUT type="file" name="image" size="35" value="<? if(isset($_FILES['image']['name'])){echo $_FILES['image']['name'];} ?>">
    Si vous connaissez la solution, n'hésitez pas à répondre
    Merci

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Par défaut
    J'avais eu un problème un peu similaire pour faire un upload multiple en un seul envoi.

    Apparemment le poste client stocke le fichier sous un nom temporaire une fois le input file renseigné, je ne suis pas sur qu'il soit donc possible de récupérer le fichier, car meme si tu entres le nom dans le input file en php l'upload ne se fera pas.

    Toutefois, un controle javascript lors de l'envoi de la page ne pourrait pas convenir ?

  3. #3
    Membre confirmé Avatar de zoidy
    Inscrit en
    Avril 2006
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 184
    Par défaut
    En fait le javascript ne conviendrait pas vu que la page se recharge lors du click de l'utilisateur sur un bouton. Et au rechargement de la page, il faut conserver toutes les données saisies par l'utilisateur, et malheureusement ce put*** d'input file n'arrive pas a me conserver les données saisies

  4. #4
    Membre confirmé Avatar de zoidy
    Inscrit en
    Avril 2006
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 184
    Par défaut
    Personne n'a eu ce problème !!!???

  5. #5
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    Je te propose une alternative, puisque ce champ n'est évidemment
    pas prévu pour ce que tu souhaites faire, et pour cause : cela supposerait que l'utilisateur aie à renvoyer ses fichiers à chaque fois qu'il y a une erreur !

    La solution est donc de déterminer quels fichiers ont déjà été envoyés correctement et de simplement afficher leur nom, éventuellement avec un lien pour les télécharger.
    Ainsi, en cas d'erreur, tu informes l'utilisateur qu'il a envoyé quelques fichiers avec succès (tu indiques la liste, éventuellement avec des liens pour télécharger les fichiers) mais que les autres n'ont pas pu être transmis (tu peux éventuellement mettre la liste aussi).

    C'est un peu ce que fait Gmail quand tu écris ton mail. Si tu mets une pièce jointe mais que tu n'envoies pas le mail tout de suite, il va se débrouiller pour l'envoyer tout seul en AJAX et il modifie ensuite la case input type="file" en simple texte avec un lien.

  6. #6
    Membre confirmé Avatar de zoidy
    Inscrit en
    Avril 2006
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 184
    Par défaut
    Oki, donc il va falloir (encore) bidouiller... ^^

    En fait, lorsqu'il y a une erreur sur le fomulaire, je n'upload pas les images, et donc l'utilisateur doit à nouveau "ressaisir" l'image.
    Et d'après ce que tu dis Yogui, il faudrait que néanmoins je les upload pour ensuite indiquer à l'utilisateur que si il a fait une erreur, elles sont quand même uploader, et donc qu'il n'a pas à ressaisir les images.
    Mais imaginons que l'utilisateur fait des erreurs et décide alors de quitter le formulaire, il faut donc enlever les images uploadées, non !?

    Merci ^^

Discussions similaires

  1. Comment récupérer les données d'un input File en php
    Par mastajeet dans le forum Langage
    Réponses: 2
    Dernier message: 25/05/2011, 09h21
  2. [newbie] radio button + input: conserver les données
    Par fredlocus dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/10/2009, 10h46
  3. réaffichage d'une page en conservant les données
    Par tetedeturcq dans le forum ASP.NET
    Réponses: 3
    Dernier message: 04/04/2007, 16h48
  4. Conserver les données passées en POST
    Par kevinf dans le forum Langage
    Réponses: 24
    Dernier message: 03/11/2006, 00h39
  5. Réponses: 8
    Dernier message: 19/05/2005, 16h03

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