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échargement d'un fichier Word [PHP 5.2]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 277
    Points : 76
    Points
    76
    Par défaut Téléchargement d'un fichier Word
    Bonjour,

    Voici le code pour forcer le téléchargement d'un fichier :

    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: no-cache, 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;
    	}
     
    	dl_file("AIDE/Manuel_utilisation.doc");
    ?>
    Mais le souci c'est quand il veut ouvrir le fichier word, il me fais ceci :


    Merci d'avance

  2. #2
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    à mon avis c'est le Content-Type qui déconne...

    Essaye plutot avec quelque chose de plus général comme on fait habituellement, remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Content-Type: $ctype");
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Content-Type: application/octet-stream');

    PS : Pour récuperer le MIME TYPE d'un fichier, utilise plutot mime_content_type() ou fileinfo (de préférence fileinfo )... se base sur l'extension du fichier c'est très mal !!

  3. #3
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 277
    Points : 76
    Points
    76
    Par défaut
    Merci beaucoup, ça fonctionne maintenant.

    Voici 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    <?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));
     
    		//Begin writing headers
    		header("Pragma: public");
    		header("Expires: 0");
    		header("Cache-Control: no-cache, 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: application/octet-stream');
     
    		//Force the download
    		$header="Content-Disposition: attachment; filename=".$filename.";";
    		header($header);
    		header("Content-Transfer-Encoding: binary");
    		header("Content-Length: ".$len);
    		@readfile($file);
    		exit;
    	}
     
    	dl_file("AIDE/Manuel_utilisation.doc");
    ?>
    Merci encore

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/06/2009, 15h30
  2. Téléchargement fichier Word et Excel
    Par vagvince dans le forum Langage
    Réponses: 1
    Dernier message: 03/11/2008, 18h02
  3. [Struts][Oracle]Upload fichier word dans une base
    Par Maximil ian dans le forum Struts 1
    Réponses: 7
    Dernier message: 10/02/2004, 15h52
  4. Comparaison de fichiers Word
    Par Zelphalya dans le forum Langage
    Réponses: 5
    Dernier message: 20/10/2003, 15h15
  5. [] Convertir un fichier word en pdf
    Par SpaceFrog dans le forum VBA Word
    Réponses: 7
    Dernier message: 06/12/2002, 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