67 en ligne Comparateur | Sites | Forum | PhpBB | Actu | Glossaire | Codes | Tips | Liens | Livres | Lettre  

 Recherche

 Newsletter





 

Télécharger un fichier

Code PHP par CedX



  <Accueil>  Déjà 696 codes ! 
AJAX [5]AS 2.0 [1]ASP [111]ASP.NET [34]CSharp [11]CSS [14]
D [1]Delphi [5]DHTML [3]Divers [5]HTML [16]JavaScript [154]
JSP [9]Maths [1]PHP [256]PHP5 [18]PowerShell [22]Regex [4]
SQL [2]V.Basic [4]VBScript [13]VS.NET [5]WPF [1]XML [1]



CedXPHP - Télécharger un fichier

Suite à une question sur un autre de mes scripts, voici un petit bout de code permettant de télécharger un fichier sur le client de l'internaute.

Ce script se base sur la fonction "typeMime" :
http://www.asp-php.net/ressources/codes/PHP-Type+MIME+d%27un+fichier+a+partir+de ...


Pour pouvoir le télécharger, connectez-vous ! ;)
<?php
/**
 * Télécharge le contenu d'un fichier sur le client de l'internaute, avec le nom spécifié.
 *
 * @param string $contenuFichier Le contenu du fichier à télécharger
 * (obtenu avec file_get_contents() par exemple).
 * @param string $nomFichier Nom du fichier qui sera proposé par défaut à l'internaute.
 */
function telechargerFichier($contenuFichier, $nomFichier)
{
   // on détermine le type MIME du fichier
   // cf. http://www.asp-php.net/ressources/codes/PHP-Type+MIME+d%27un+fichier+a+partir+de+son+nom.aspx
   $typeFichier=typeMime($nomFichier);
   
   // on nettoie le tampon d'affichage, et on désactive la compression ZLib
   @ob_end_clean();
   @ini_set('zlib.output_compression', '0');
   
   // date courante
   $maintenant=gmdate('D, d M Y H:i:s').' GMT';
   
   // envoi des en-têtes nécessaires au navigateur
   header('Content-Type: '.$typeFichier);
   header('Content-Disposition: attachment; filename="'.$nomFichier.'"');
   
   // Internet Explorer nécessite des en-têtes spécifiques
   if(preg_match('/msie|(microsoft internet explorer)/i', $_SERVER['HTTP_USER_AGENT']))
   {
      header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
      header('Pragma: public');
   }
   else header('Pragma: no-cache');
   
   header('Last-Modified: '.$maintenant);
   header('Expires: '.$maintenant); 
   header('Content-Length: '.strlen($contenu));
   
   // il ne reste plus qu'à envoyer le contenu du fichier
   echo $contenu;
}
?>

Proposé par CedX le 18/03/2006 [vu 44867 fois]
Commentaires
toto123456789
toto123456789
06/11/06

un peu buggé...
il faut remplacer $contenu par $contenuFichier.
pour appeler la fonction:
telechargerFichier(file_get_contents('cheminsecret/secret.doc'), 'document.doc');
lesucces
lesucces
09/12/06

Bonjour
Même après avoir remplacer $contenu comme vous avez dit, quand on ecrit

telechargerFichier(file_get_contents('cheminsecret/secret.doc'), 'document.doc');

on a une erreur du genre
Fatal error: Call to undefined function: typemime() in c:\program files\easyphp1-8\www\maxime\telecharger.php on line 13

Que faire ? Merci
lesucces
lesucces
09/12/06

Autre solution
J'ai fait ceci
Code :
<?php

//Pour télécharger les fichiers
function typeMime($nomFichier)
/* retourne le type MIME à partir de l'extension de fichier contenu dans $nomFichier
Exemple : $nomFichier = "fichier.pdf" => type renvoyé : "application/pdf" */
{
    
// on détecte d'abord le navigateur, ça nous servira plus tard
    
if(preg_match("@Opera(/| )([0-9].[0-9]{1,2})@"$_SERVER['HTTP_USER_AGENT'], $resultats))
        
$navigateur="Opera";
    elseif(
preg_match("@MSIE ([0-9].[0-9]{1,2})@"$_SERVER['HTTP_USER_AGENT'], $resultats))
        
$navigateur="Internet Explorer";
    else 
$navigateur="Mozilla";

    
// on récupère la liste des extensions de fichiers et leurs types Mime associés
    
$mime=parse_ini_file("mime.ini");
    
$extension=substr($nomFichierstrrpos($nomFichier".")+1);
    
    
/* on affecte le type Mime si on a trouvé l'extension sinon le type par défaut (un flux d'octets).
    Attention : Internet Explorer et Opera ne supporte pas le type MIME standard */
    
if(array_key_exists($extension$mime)) $type=$mime[$extension];
    else 
$type=($navigateur!="Mozilla") ? 'application/octetstream' 'application/octet-stream';

    return 
$type;
}
/**
 * Télécharge le contenu d'un fichier sur le client de l'internaute, avec le nom spécifié.
 *
 * @param string $contenuFichier Le contenu du fichier à télécharger
 * (obtenu avec file_get_contents() par exemple).
 * @param string $nomFichier Nom du fichier qui sera proposé par défaut à l'internaute.
 */
function telechargerFichier($contenuFichier$nomFichier)
{
    
// on détermine le type MIME du fichier
    // cf. http://www.asp-php.net/ressources/codes/PHP-Type+MIME+d%27un+fichier+a+partir+de ...
    
$typeFichier=typeMime($nomFichier);
    
    
// on nettoie le tampon d'affichage, et on désactive la compression ZLib
    
@ob_end_clean();
    @
ini_set('zlib.output_compression''0');
    
    
// date courante
    
$maintenant=gmdate('D, d M Y H:i:s').' GMT';
    
    
// envoi des en-têtes nécessaires au navigateur
    
header('Content-Type: '.$typeFichier);
    
header('Content-Disposition: attachment; filename="'.$nomFichier.'"');
    
    
// Internet Explorer nécessite des en-têtes spécifiques
    
if(preg_match('/msie|(microsoft internet explorer)/i'$_SERVER['HTTP_USER_AGENT']))
    {
        
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        
header('Pragma: public');
    }
    else 
header('Pragma: no-cache');
    
    
header('Last-Modified: '.$maintenant);
    
header('Expires: '.$maintenant); 
    
header('Content-Length: '.strlen($contenuFichier));
    
    
// il ne reste plus qu'à envoyer le contenu du fichier
    
echo $contenuFichier;
}

telechargerFichier(file_get_contents('telecharger1.txt'), 'telecharger1.txt');

?>
[/code]

Et j'ai créer un fichier mime.ini contenant

[code]
[textes]
txt = text/plain
htm = text/html
html = text/html
css = text/css

[images]
png = image/png
gif = image/gif
jpg = image/jpeg
jpeg = image/jpeg
bmp = image/bmp
tif = image/tiff

[archives]
bz2 = application/x-bzip
gz = application/x-gzip
tar = application/x-tar
zip = application/zip

[audio]
aif = audio/aiff
aiff = audio/aiff
mid = audio/mid
midi = audio/mid
mp3 = audio/mpeg
ogg = audio/ogg
wav = audio/wav
wma = audio/x-ms-wma

[video]
asf = video/x-ms-asf
asx = video/x-ms-asf
avi = video/avi
mpg = video/mpeg
mpeg = video/mpeg
wmv = video/x-ms-wmv
wmx = video/x-ms-wmx

[xml]
xml = text/xml
xsl = text/xsl

[microsoft]
doc = application/msword
rtf = application/msword
xls = application/excel
pps = application/vnd.ms-powerpoint
ppt = application/vnd.ms-powerpoint

[adobe]
pdf = application/pdf
ai = application/postscript
eps = application/postscript
psd = image/psd

[macromedia]
swf = application/x-shockwave-flash

[real]
ra = audio/vnd.rn-realaudio
ram = audio/x-pn-realaudio
rm = application/vnd.rn-realmedia
rv = video/vnd.rn-realvideo

[autres]
exe = application/x-msdownload
pls = audio/scpls
m3u = audio/x-mpegurl


Mais le fait est que au lieu de té"lécharger le fichier, il m'affiche le contenu du fichier.

Merci de m'aider

Pour participer, il faut d'abord vous identifier !
284 visiteurs ont déjà participé dont :
DB77 [47]fmarie [26]Fabrice69 [25]CedX [25]Didier [22]
tedheu [21]Bisou [20]mohman [17]jreaux62 [16]romuluslepunk [15]
foxmaster [15]Vonscott [12]iubito [10]Redo [9]Balin [8]
poppy [7]fmaunier [6]cyrillus [6]pseudomenace [6]david96 [6]
CrazyCat [5]antoun [5]Pozzy [5]TBliss [5]Aurelien [5]
daoudi [5]Ours [5]bahdot [5]houcem_tsp [4]Chrigou [4]
debackp [4]lex [4]hyoucef [4]Jips [4]zut69 [3]
salem [3]berguerand01 [3]phenixbd [3]twins20 [3]kandal [3]
mhaido [3]mcorgnet [3]philouonline [3]master-killer [3]Maclearner [3]
crocxx [3]laetyboop [3]Poucet [3]olivierland94 [3]

Didier Téléchargez gratuitement et légalement des logiciels Microsoft ! Si, si ;)
  • Visual Studio 2010
  • Office 2010
  • Expression Studio 3
  • SQL Server 2008
  • et d'autres...

Au fil des news  
Adobe - Adobe lance des applications Photoshop Express....
PHP - Détermination de l'intersection entre 2 segments
Magazines - Le N°132 de Programmez est disponible
Les alertes dans SharePoint 2007 - Comment SharePoint 2007 gère les User Alerts
Une des fonctionnalités de base de SharePoint, aussi bien dans Windows SharePoint Services (WSS) ...
Adobe - Photoshop.com Mobile pour Android 1.2
Adobe - Adobe dévoile une technologie de lecture.......
PHP - Experts PHP : participez au Forum PHP 2010 !
PHP - Fobec.com - Code source PHP & javascript
Foliotage alphabétique - Lister sur la première lettre d'un champ
Pour faire suite à l'article de JPierre sur la pagination alphabétique, voici, en ASP et en PHP, ...
Dreamweaver CS4 + Php + Mysql - Pagination alphabétique
Je vous propose la création d'une barre de navigation ou pagination alphabétique pour filtrer les ...
Adobe - HTML5 dans Dreamweaver CS5
VBScript - Déterminer si un chemin est absolu ou relatif
VBScript - Lire/écrire un fichier texte
Magazines - Le N°130 de Programmez est disponible
Hebergement - Hébergement à prix libre
Adobe - Adobe Creative Suite 5
PHP - Calcul de la date de Pâques
Magazines - Le N°128 de Programmez est disponible
Magazines - Le N°127 de Programmez est disponible
Dreamweaver CS4 + Php + Mysql - Trucs et Astuces - Part 6
Pour continuer dans le même style, je vous propose une suite au précédent article. Rechercher tous ...
Adobe - Adobe Photoshop.com Mobile pour iPhone 1.1
JavaScript - Ajouter une page dans vos favorites
Dreamweaver CS4 + Php + Mysql - Trucs et Astuces - Part 5 -
Je vous propose cette fois deux astuces. Comment exporter une feuille de style avec l'aide de ...
SharePoint Personalization Site Links - Les liens personnalisés des MySite SharePoint
Nous avons vu dans les articles précédents comment agrémenter les pages de recherche afin de ...
Magazines - Le n°126 de Programmez est disponible
Outils - Traducteur en ligne automatique pour site web
Adobe - Adobe Photoshop.com Mobile pour Iphone
Magazines - Le n°125 de Programmez est disponible
Adobe - Adobe AIR 2 et Flash Player 10.1version bêta
Les conférences autour des technologies Microsoft - Liste non exhaustive des grands évènements
Nous allons essayer de regrouper un grand nombre des évènements autour des technologies Microsoft ...
Magazines - Le n°124 de Programmez est disponible
PHP - Forum PHP 2009
Composants - eFace - XAML en Java
WPF - Désactiver le bouton de réduction d'une fenêtre
Magazines - Le n°123 de Programmez est disponible
Magazines - Le n°122 de Programmez est disponible
Auditer une ferme SharePoint - Assurer le bon fonctionnement de SharePoint
Dans le cadre de la bonne gestion de son environnement SharePoint, il est utile de faire un ...
SQL Server 2008 Report Builder 2.0 - Installation et utilisation de Report Builder 2.0
Dans le cadre de la création de rapports pour SQL Server Reporting Services 2008, un outil est ...
Magazines - Le HS N° 1 de Web Design est disponible
Outils - EntityBuilder
  Tutorial : HTML | Scripting | ASP-PHP | ASP.net | SQL Server | XML
Sharepoint | XAML | Pocket | Dreamweaver | VML | Divers
  Scripts : Scripting | ASP-PHP | ASP.net | Divers
  Boutique | Annuaire | Bannières | Météo | Tribune | Partenariats | Recherches
v4.3 © Didier YVER
2001-2010
 
 

Corpo Sciences de Reims Partitions gratuites Carte, météo, annonces
TechNet ASP-magazine Groupes Utilisateurs Microsoft DotNet Project MVP