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 :

[CSV] Proposer un fichier qui n'existe pas encore


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 27
    Points : 9
    Points
    9
    Par défaut [CSV] Proposer un fichier qui n'existe pas encore
    Bonjour, Comment peut-on faire pour que lors de l'exécution de monfichier.php, le visiteur se voit proposé un fichier à enregistrer sur son disque dur ?
    Le but étant que le visiteur puisse enregistrer un fichier créer par monfichier.php mais que le visiteur n'ait pas besoin de cliquer une deuxième fois sur le lien qui pointe vers le fichier une fois qu'il a été crée. Toute piste est la bienvenue, merci d'avance !

    Vu que je ne suis pas clair, un exemple : Le visiteur clique sur le lien http://monsite.com/save.php, du coup save.php fabrique le fichier fdsfds.txt et le visiteur a sans action supplémentaire, la fenêtre de son browser qui lui propose d'enregistrer sur son disque ce fameux fichier fdsfds.txt

  2. #2
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonjour,

    pour faire ceci, il faut que la page qui génère le téléchargement soit à part.

    Dans celle-ci il faut changer l'entête HTTP pour qu'elle renvoie un fichier en pièce jointe.


    save.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // Génération du fichier csv fopen / fwrite / fclose
    header('Content-Type: application/vnd.ms-excel;');
    header("Content-type: application/x-msexcel"); 
    header('Content-Disposition: attachment; filename="membres.csv"');

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 27
    Points : 9
    Points
    9
    Par défaut
    ok, je te remercie. Le problème, c'est que,si j'ai bien compris ton exemple, il faut connaitre le type de fichier or l'extension du fichier généré ne dépend pas de moi mais du visiteur. Ca peut être un csv comme ici mais pourquoi pas un .exe, un .txt ou même un .dfdsfdsfs

  4. #4
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Tu n'es pas obligé de préciser le type de fichier renvoyé, mais cela permet au navigateur de proposer de lancer l'application associé si elle est disponible.

    Aussi, tu pourrais affecter le Content-Type en fonction de l'extension du fichier proposé.

    À toi de voir

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 27
    Points : 9
    Points
    9
    Par défaut
    ok, du coup j'ai cherché sur google avec ta solution et je vois deux réponses différentes:

    la ligne header('Content-Disposition: attachment; filename="membres.csv"');
    est parfois remplacée par un readfile($filename);
    Est ce que tu sais si une des deux solutions est meilleure que l'autre ?

    J'ai aussi une autre question. Si je reprends, le site génère un fichier quelconque à la demande du visiteur dont il contrôle le contenu. Du coup, grosse faille de sécurité s'il fabrique par exemple un effacetout.php... J'aimerai éviter d'interdire certaines extensions, est ce que je peux sur mon serveur avoir un fichier du genre fichier.zzz et que le visiteur enregistre fichier.sa_vraie_extension sans qu'il ait besoin de changer l'extension dans la fenêtre de téléchargement de son browser ?

Discussions similaires

  1. fichier qui n'existe pas alors qu'il est là (et que avec IE)
    Par laurentSc dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 13/05/2013, 23h36
  2. Eviter l'erreur sur un fichier qui n'existe pas
    Par Esmax666 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/07/2009, 15h10
  3. Réponses: 7
    Dernier message: 15/03/2009, 16h07
  4. Réponses: 4
    Dernier message: 12/08/2008, 15h40
  5. Réponses: 3
    Dernier message: 14/08/2006, 19h13

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