Table des matières

Comment forcer le téléchargement de fichiers à travers un serveur Web

Cet article va vous expliquer comment forcer le téléchargement de fichiers quels que soient leurs types. (testé sur Apache 2)

Lorsque l'on souhaite proposer les fichiers dans un dossier d'un serveur Web, il n'est pas rare que ce soit le navigateur qui l'ouvre directement (Fichiers images, pdf, etc.), alors que l'on souhaite que le navigateur propose le téléchargement du fichier. Il y a plusieurs méthodes pour forcer le téléchargement de fichiers.

La méthode CGI ou PHP

Une des premières facons , est de créer un script CGI (quelque soit le language à condition que votre hébergeur le supporte) qui écrit les entêtes HTTP adéquats pour forcer le téléchargement d'un fichier par le navigateur. On utilise habituellement l'entête HTTP suivant :

Content-Type: application/x-download

Plusieurs Entêtes doivent être précisés pour mener à bien l'opération :

Content-Type:application/x-download
Content-Length:<Taille en octets du fichier>
Content-Disposition:attachment;filename=<nom du fichier>

Les avantages de la méthode

Les inconvénients de la méthode

Comment forcer le téléchargement de fichiers, 2ème solution

Dans la page précédente, nous avons vu comment on pouvait forcer le téléchargement d'un fichier par l'intermédiaire d'un script CGI. Nous allons maintenant voir comment se passer d'un CGI , et utiliser les directives d'apache pour forcer le téléchargement de fichiers

La méthode Apache + htaccess

Il suffit tout simplement de créer un fichier .htaccess dans le répertoire de téléchargement, de la forme suivante

<FilesMatch "\.(.*)">
  ForceType application/x-download
</FilesMatch>

Cette configuration indique à Apache que tous les fichiers nommés *.* devront avoir le type application/x-download, et de ce fait tous feront apparaître une fenêtre de téléchargement sur le navigateur du visiteur. Avantages de la méthode

Inconvénients de la solution

Je conseille donc cette méthode pour forcer le téléchargement.

Pages relatives