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

  • Permet d'avoir une racine virtuelle pour le stockage des fichiers : un répértoire accessible uniquement par un utilisateur particulier, un répertoire caché de l'arboresence du serveur, ou encore un repertoire stocké sur un autre serveur (par nfs, ftp ou autre)
  • Permet d'utiliser n'importe quel langage de programmation : Perl, PHP, Python, C, etc.

Les inconvénients de la méthode

  • Utilise beaucoup des ressources système , notamment lorsqu'un langage de script est utilisé (cela peut aller jusqu'a 10 % du CPU, et une quantité de mémoire de la taille du fichier.
  • Méthode qui peut se révéler être une faille de sécurité, si l'on décide d'organiser les fichiers à télécharger en dossiers

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

  • Ne nécessite pas le développement d'un script spécifique
  • Simple à mettre en place
  • Fonctionne sur une grosse majorité d'hebergeurs
  • Sécurisé car utilisant la gestion d'url d'apache
  • Consomme très peu de ressources système.

Inconvénients de la solution

  • Je n'en vois pas spécialement.

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

Pages relatives

 
unix/general/forcer-le-telechargement-a-travers-un-serveur-web.txt · Dernière modification: 2017/07/27 16:08 (édition externe)
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki