Forcer un téléchargement

Il peut être plus pratique de forcer le téléchargement d’un fichier que de systématiquement le proposer en fichier .zip.
Voici deux méthodes utilisant PHP pour ce faire.
Pensez à protéger vos répertoires sensibles, par un .htaccess par exemple.

Forcer le téléchargement d’un fichier

Dans un fichier texte, saisir ceci et enregistrer le en download.php par exemple.

<?php
header(« Content-type: application/force-download »);
header(« Content-Disposition: attachment; filename=nom_fichier.extension »);
readfile(« http://www.serveur.com/dossier/nom_fichier.extension »);
?>

On fait ensuite un lien direct vers ce fichier :

<A href= »download.php »>Télécharger le fichier</A>

download.mxp download.mxp (819 bytes)

Forcer le téléchargement d’un fichier de manière dynamique

On définit d’abord deux variables, une variable $file qui va être le nom du fichier, une variable $chemin qui est l’url du fichier à downloader.
Dans un fichier texte saisissez ceci, et enregistré le en download.php par exemple :

<?php
header(« Content-type: application/force-download »);
header(« Content-Disposition: attachment; filename= ».$file);
readfile($chemin.$file);
?>

Dans votre page le lien va donner ceci :

<A href= »download.php?chemin=http://www.serveur.com/dossier/
&file=nom_fichier.extension »>
Télécharger le fichier</A>

download_dyn.mxp download_dyn.mxp (1.07 KB)

Une réponse Souscrire aux commentaires


  1. Nicolas

    Attention avec cette méthode à la con car vous offrez votre site aux hackers.
    La variable $chemin peut etre n’importe quoi, y compris un chemin vers /etc/passwd (fichier de mot de passe du serveur) !

    Il faut toujours faire un if qui teste si l’utilisateur est autorisé à téléchargé le fichier qu’il demande !!

    Le script php est executé avec les droits d’accès d’apache et non pas avec les droits d’accès du n’importe qui…

    A++
    Nicolas

    17 sept 2009 @ 17:49

Répondre