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 :

Télécharger un fichier XML et non l'ouvrir


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 107
    Points : 60
    Points
    60
    Par défaut Télécharger un fichier XML et non l'ouvrir
    Voila j'ai des liens hypertextes avec des fichiers XML .. Je souhaiterai pourvoir forcer le téléchargement pour ne pas les ouvrir avec IE ou Firefox.

    J'ai trouvé une fonction qui repondait surement à ce problème . La voila :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
         <?php
     
         function dl_file($file){
     
            //First, see if the file exists
            if (!is_file($file)) { die("<b>404 File not found!</b>"); }
     
            //Gather relevent info about file
            $len = filesize($file);
            $filename = basename($file);
            $file_extension = strtolower(substr(strrchr($filename,"."),1));
     
            //This will set the Content-Type to the appropriate setting for the file
            switch( $file_extension ) {
                  case "pdf": $ctype="application/pdf"; break;
              case "exe": $ctype="application/octet-stream"; break;
              case "zip": $ctype="application/zip"; break;
              case "doc": $ctype="application/msword"; break;
             case "xls": $ctype="application/vnd.ms-excel"; break;
            case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
              case "gif": $ctype="image/gif"; break;
              case "png": $ctype="image/png"; break;
              case "jpeg":
              case "jpg": $ctype="image/jpg"; break;
              case "mp3": $ctype="audio/mpeg"; break;
              case "wav": $ctype="audio/x-wav"; break;
              case "mpeg":
              case "mpg":
              case "mpe": $ctype="video/mpeg"; break;
              case "mov": $ctype="video/quicktime"; break;
              case "avi": $ctype="video/x-msvideo"; break;
     
              //The following are for extensions that shouldn't be downloaded (sensitive stuff, like php files)
              case "php":
              case "htm":
              case "html":
              case "txt": die("<b>Cannot be used for ". $file_extension ." files!</b>"); break;
     
              default: $ctype="application/force-download";
            }
     
            //Begin writing headers
            header("Pragma: public");
            header("Expires: 0");
            header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
            header("Cache-Control: public");
            header("Content-Description: File Transfer");
     
            //Use the switch-generated Content-Type
            header("Content-Type: $ctype");
     
            //Force the download
            $header="Content-Disposition: attachment; filename=".$filename.";";
            header($header );
            header("Content-Transfer-Encoding: binary");
            header("Content-Length: ".$len);
            @readfile($file);
            exit;
         }
     
         ?>
    Je souhaiterai lier cette fonctio à mon lien hypertexte. Comment faire s'il vous plaît. EN gros quand je clique sur le lien ca appelle cette fonction ..

    Merci d avance

  2. #2
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Tu inclus cette fonction dans un fichier, puis tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dl_file ( $_GET['file'] ) ;
    Avec $_GET['file'] comme paramètre de ton lien. Sans compter une tonne de vérification sur le contenu de cette variable.
    Consultant idéaliste.

  3. #3
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 107
    Points : 60
    Points
    60
    Par défaut
    Euh .. je ne comprends ...

    J'aurais souhaité faire un truc dans le genre là ...

    echo "<a href='dl_file("prout".xml")'>Download XML file</a>";

    Bon je sais que ca ne marche pas comme ca, mais j'aurai souhaité faire un truc ce genre.
    merci

  4. #4
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Non effectivement cela ne fonctionne pas comme cela PHP, tu confonds avec javascript.

    Comme dis plus haut tu places ta fonction dans un fichier php que tu nommes toto.php puis dans ton lien tu écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="toto.php?file=truc.xml">texte</a>
    Et dans le fichier toto.php tu as cette ligne : dl_file ( $_GET['file'] ) ;
    Consultant idéaliste.

  5. #5
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 107
    Points : 60
    Points
    60
    Par défaut
    Oki merci bcp ! je vais essayer

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/05/2012, 20h42
  2. Comment télécharger un fichier xml
    Par Gus G dans le forum ASP.NET
    Réponses: 4
    Dernier message: 09/06/2011, 10h38
  3. [HTML 4.0] Télécharger un fichier au lieu de l'ouvrir
    Par polochonad dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 07/10/2009, 09h41
  4. [FPDF] Télécharger fichier pdf et non l'ouvrir
    Par kluck3000 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 11/04/2008, 15h43
  5. télécharger un fichier xml
    Par thierryler dans le forum Langage
    Réponses: 1
    Dernier message: 26/11/2007, 16h14

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