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 :

Mettre la valeur d'un upload dans une variable


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 95
    Par défaut Mettre la valeur d'un upload dans une variable
    Bonjour,

    Je traites les erreurs d'un formulaire en php, or pour un upluad lorsque je recharge la page du formulaire l'adresse du fichier à charger est perdu et l'on doit refaire " parcourir..".
    Y a t-il un moyen de mettre l'adresse du fichier dans une variable et de la remettre comme valeur value=" …."

    Je ne peux pas ouvrir une fenêtre, trop long.

    Merci pour votre aide.

  2. #2
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Y a t-il un moyen de mettre l'adresse du fichier dans une variable
    Il me semble pas, car le $_FILES ne retourne que le nom du fichier, mais pas le chemin complet du disque du poste client où le fichier à été récupéré.

    Par contre, une idée comme ça, je me demande s'il y a pas moyen de ruser avec du Javascript.
    Si on met un onchange="" sur le input type="file" (le bouton parcourir), avec une fonction JS qui récupère sa valeur et la met illico presto dans un champ caché, peut être que ça retournera le chemin.
    Du coup, suffit de récupérer la valeur du champ caché pour remettre dans les 2 en cas d'erreur.

    Mais après, lors du 2ème submit, est ce que c'est le flux du fichier qui va être retourné ???

    Jamais essayé ... une idée quoi


    Sinon, dépose le(s) fichier(e) tout simplement comme prévu.
    S'il a été correctement déposé, tu renvoie l'info, et au rechargement, plus besoin de remettre les boutons parcourir ... c'est déjà fait.
    S'il y a erreur lors de l'upload, il faudra de toute manière recommencer, ou rechercher un autre fichier valide.

    Là encore c'est une idée.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 95
    Par défaut
    Merci pour ta réponse,

    Je ne suis pas pour du js et de plus je ne le maitrise pas du tout alors de la faire une fonction.

    Si tu a un exemple en js je suis preneur si non la question reste ouverte.

    dans tout les cas merci.

  4. #4
    Membre chevronné
    Avatar de hornetbzz
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Octobre 2009
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Octobre 2009
    Messages : 482
    Par défaut
    Salut

    Tu peux peut-être tout simplement utiliser une variable de session $_SESSION['fichier_download'] pour stocker ton nom de fichier, et l'afficher dans ton formulaire, en testant si elle existe. Selon ce principe décrit dans la FAQ :

    FORM
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    session_start(); // à ajouter en tête de chaque page
     
    echo '<form action="traitement.php" method="POST">;
    // ... ton formulaire
    $file = (isset($_SESSION['fichier_download']))? $_SESSION['fichier_download'] : "" ;
    echo "<input name="file_name" value=" . $file . "/>" ;
    echo "</form>";
    ?>
    TRAITEMENT.PHP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    session_start();
    ...
    // Tu récupères tes variables POST, dont file_name que tu balances dans $_SESSION['fichier_download']
     
    if (isset($_POST['file_name']) && !empty($_POST['file_name'])) $_SESSION[fichier_download] = htmlspecialchars($_POST['file_name']);
    ...
    ?>
    Comme ça, quand tu reviens à ton formulaire FORM, si le fichier a déjà été défini auparavant, et bien il apparaitra.

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Non ce n'est pas possible : pour des raisons evidentes de sécurité, il n'y a que le navigateur qui contrôle les champs FILE.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Citation Envoyé par sabotage
    Non ce n'est pas possible
    +1
    J'ai fais un petit essai pour la solution JS ... Là aussi ça ne retourne que le nom.
    C'est pas possible.

    Te reste la 2ème solution : uploader, vérifier si ça c'est bien été effectué ou pas, et retourner l'info.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 95
    Par défaut
    Bonjour,

    merci pour ces réponses, toutes les solutions retournent le nom.

    Il y aurai une solution en java (puisque c'est sur l'écran c'est aussi ailleurs donc récupérable)qui dépendrait du navigateur et de sa configuration.
    Je n'ai pas trouvé de script en java qui ferait cela.
    Bref, cela dépasse très amplement mes maigres connaissances.

    Merci à tous.

    Pour ceux qui arrive ici: Il y a une autre solution ( affichage lent), c'est d'ouvrir la page erreur dans une autre fenêtre et là comme on ne ferme pas la fenêtre du formulaire l'adresse du fichier reste.

    Ci-dessous le 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
     
    dans la page du formulaire
     
    <script type="text/javascript">
    function Nouvelle_Fenetre(id)
    {
    	document.getElementById(id).target = 'Nouvelle';
    	popup = window.open('', 'Nouvelle','left=50,top=50,width=300,height=200,toolbar=0,location=0,status=0,directories=0,menuBar=0,resizable=0,scrollbars=0');
     
    if (popup && popup.focus) popup.focus();
            popup.resizeTo(width,height) ;
    }
     
    </script>
     
     
    <form  id="Form"   action="traitement_ajout_donnee.php " enctype="multipart/form-data" method="post"   onsubmit="Nouvelle_Fenetre(Form)" />

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

Discussions similaires

  1. [XSLT] mettre une valeur d'un XML dans une variable ?
    Par xiii34 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 13/04/2007, 18h14
  2. Mettre le contenu d'un TMemo dans une variable
    Par beral dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/08/2006, 00h57
  3. Mettre le résultat d'un javascript dans une variable php??
    Par kahya dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 19/05/2006, 09h43
  4. Réponses: 4
    Dernier message: 14/09/2005, 17h23
  5. Utiliser la valeur d'un input dans une variable php
    Par megane dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/08/2005, 16h02

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