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 :

récupération très difficile de la super-globale $_FILES


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut récupération très difficile de la super-globale $_FILES
    Bonjour,

    j'ai un formulaire pour sélectionner un fichier à uploader, donc qui doit générer $_FILES
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <!-- form to upload a csv file from the hard disk -->
    <form action="index.php?action=UploadCSV" method="post" enctype="multipart/form-data">
        <label for="file2"><b>File CSV</b></label>
        <input type="file" name="file2" id="file2"><br/>
        <input type="submit" name="submitfile2" value="csv file download"><br/>
        </form>

    Néanmoins, si je lis $_FILES dans un autre fichier, le var_dump($_FILES) retourne NULL.
    Pour m'en sortir, dans l'action du formulaire, j'ai mis :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $return='http://localhost/www/ticket2/index.php?action=Controller&return='.$filepath.'&file='.serialize($_FILES);
    header('location: '.$return);
    exit();
    et dans le fichier où je le récupère $file=unserialize($_GET['file']);.

    Cette acrobatie est un peu lourde. Puis-je m'en passer ?

  2. #2
    Membre confirmé Avatar de ma5t3r
    Homme Profil pro
    Développeur freelance
    Inscrit en
    Mai 2015
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Mai 2015
    Messages : 320
    Points : 492
    Points
    492
    Par défaut
    Salut, théoriquement, tu dois traiter l'upload dans :
    index.php?action=UploadCSV
    On dirait du prestashop. Me trompé-je ?

  3. #3
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Rien à voir ; il s'agit du routeur de rawsrc et pour le reste, le code est de moi.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    // routage très basique
    $routes = [
        'Controller' => 'controller/Controller_controller.php',
        'View' => 'controller/View_controller.php',
        'Array' => 'controller/DispArray_controller.php',
        'UploadCSV' => 'view/ActionUpload_view.php',
        'DispValTicket' => 'controller/DispValuesTicket_controller.php',
        'LinkTicketFromArray'=>'controller/LinkTicketFromArray_controller.php',
    ];
     
    parse_str($_SERVER['QUERY_STRING'], $query);
    $action = $query['action'] ?? '';

    Le traitement complet du formulaire (ActionUpload_view.php) :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    $upload_dir = 'csv';
    $name = $_FILES['file2']['name'];
    $filepath = DIR_ROOT .$upload_dir.DIRECTORY_SEPARATOR.$name;
    $return='http://localhost/www/ticket2/index.php?action=Controller&return='.$filepath.'&file='.serialize($_FILES);
    header('location: '.$return);
    exit();

  4. #4
    Membre confirmé Avatar de ma5t3r
    Homme Profil pro
    Développeur freelance
    Inscrit en
    Mai 2015
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Mai 2015
    Messages : 320
    Points : 492
    Points
    492
    Par défaut
    Dans ton fichier ActionUpload_view.php, un
    ça donne quoi ?

  5. #5
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    array(1) { ["file2"]=> array(5) { ["name"]=> string(24) "sep_pointvirgule_ARM.csv" ["type"]=> string(24) "application/vnd.ms-excel" ["tmp_name"]=> string(24) "C:\xampp\tmp\phpA4DC.tmp" ["error"]=> int(0) ["size"]=> int(10378) } }
    à condition de commenter la redirection, sinon, bien sûr, on ne le voit pas.

  6. #6
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    salut Laurent

    tu dois d'abord te poser la question : pourquoi ne pas traiter le fichier uploadé au moment où il est uploadé ?
    Pourquoi t'as besoin de transférer ce traitement ailleurs ?
    Si tu dois transférer ce traitement, tu dois juste transférer le nom que le système ou l'utilisateur lui a donné avec le chemin complet pour l'atteindre.

  7. #7
    Membre confirmé Avatar de ma5t3r
    Homme Profil pro
    Développeur freelance
    Inscrit en
    Mai 2015
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Mai 2015
    Messages : 320
    Points : 492
    Points
    492
    Par défaut
    Supprime la ligne vide (1) de ton fichier ActionUpload_view.php le header n'aime pas ça

  8. #8
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    @ma5tr : y a pas de ligne vide...C'est juste du à ma façon de mettre du code sur le forum.

    @rawsrc : j'avais choisi d'exporter l'action suite à cette discussion : https://www.developpez.net/forums/d2...files-n-creee/. J'ai essayé de revenir en arrière pour voir...plus de souci !

    Code php : 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
     
    <!-- form to upload a csv file from the hard disk -->
    <form action="" method="post" enctype="multipart/form-data">
        <label for="file2"><b>File CSV</b></label>
        <input type="file" name="file2" id="file2"><br/>
        <input type="submit" name="submitfile2" value="csv file download"><br/>
        </form>
    <?php
    if (isset($_POST['submitfile2']))
    {
        $upload_dir = 'csv';
        $name = $_FILES['file2']['name'];
        $filepath = DIR_ROOT .$upload_dir.DIRECTORY_SEPARATOR.$name;
         $return='http://localhost/www/ticket2/index.php?action=Controller&return='.$filepath;
        header('location: '.$return);
        exit();
    }
    ?>
    Comme tu me l'as conseillé, je ne transmets que le nom du fichier (son chemin complet)(même si je n'exporte plus le traitement, ce chemin de fichier est utilisé ailleurs)

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

Discussions similaires

  1. Une recherche très difficile !
    Par orditosh dans le forum WinDev
    Réponses: 55
    Dernier message: 23/12/2007, 20h32
  2. Variables super-global ?
    Par meliandah dans le forum Langage
    Réponses: 8
    Dernier message: 13/05/2007, 16h14
  3. Variable super globale au projet
    Par florent149 dans le forum Général VBA
    Réponses: 35
    Dernier message: 11/07/2006, 10h52
  4. Rendre super-globale une variable
    Par thanaos dans le forum Langage
    Réponses: 13
    Dernier message: 09/06/2006, 11h05
  5. [.NET] [C#] Variable super global ?
    Par choas dans le forum Windows Forms
    Réponses: 4
    Dernier message: 15/04/2005, 15h27

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