Forcer le téléchargement d’un fichier par le navigateur

Cet article a 395 jours. Il commence à dater, lisez-le donc en gardant son âge en tête ! Merci

Le « force file to download » (entendez forcer le fichier à se télécharger) permet de forcer le navigateur à ouvrir la boîte de dialogue de téléchargement pour certains types de fichier. C’est le cas par défaut des fichiers de type archive (.zip, .rar, etc.) si je ne fais pas erreur.

Forcer le téléchargement d’un type de fichier

Il existe une instruction à placer dans le fichier .htaccess qui permet d’indiquer au navigateur la manière dont il doit traiter certains formats de fichier lorsque le visiteur parcourt un fichier.
La ligne de code suivante permet de traiter les PDF comme étant un type de fichier à télécharger, et non à afficher dans le navigateur :

AddType application/octet-stream .pdf

À noter que le point est optionnel, et que l’extension d’un fichier n’est pas sensible à la casse : inutile donc d’ajouter l’extension en majuscule « PDF », ça ferait doublon.

Vous pouvez traiter plusieurs types de fichiers de la même manière en rajoutant simplement les extensions de chacun des fichiers les uns derrière les autres en les séparant par un espace :

AddType application/octet-stream pdf mp3 mp4 avi

Il est possible de placer un fichier .htaccess dans un sous-dossier de votre site web pour n’impacter que les fichiers à l’intérieur de ce dosssier.

Écartons-nous un poil du sujet

Dans certains cas, le navigateur télécharge votre fichier .swf comme s’il s’agissait d’un type application/octet-stream. Pour résoudre ce problème, complétez votre .htaccess de la sorte :

AddType application/x-shockwave-flash swf 

Je vous invite à lire ce guide en anglais pour en apprendre davantage :
Adding MIME Types – htaccess-guide.com

C’est tout pour cette astuce.
N’hésitez pas à commenter si vous rencontrez des problèmes !

PS : astuce à venir sur le même sujet en HTML5

8 commentaires sur “Forcer le téléchargement d’un fichier par le navigateur”

  1. maniche dit :
    11 septembre 2012

    je tiens a vous remercie pour cette astuce , vraiment et du fond du cœur merci pour le partage

  2. Geoffrey dit :
    11 septembre 2012

    Oh… il n’y a pas de quoi :)

  3. Xavier dit :
    30 novembre 2012

    Hello !

    Cet article m’a bien aidé. On sous estime toujours la puissance d’un petit fichier htaccess

    Merci :)

  4. pierre dit :
    10 janvier 2013

    Merci pour l’info!
    Cependant, sur mon blog, cela ne fonctionne pas ???
    Mon probleme = 1 fichier mkv en téléchargement qui se lance en lecture au lieu de se télécharger…
    J’ai installé un fichier access dans le dossier ou se trouvent mes fichiers mkv
    Rien a changer!!!
    Si vous pouvez m’aider à comprendre??
    Cela serait très sympa!
    ci-dessous le texte :
    AddType application/octet-stream avi mkv

    Détail qui peut avoir son importance:
    le blog dans lequel je souhaite installer ce fichier htaccess a été installé en partageant la même base qu’un premier blog déjà installé chez Ovh…

  5. pierre dit :
    10 janvier 2013

    J’ai résolu mon problème avec:

    ForceType application/octet-stream
    Header set Content-Disposition attachment

    Merci tout de même pour votre Blog

  6. Geoffrey dit :
    11 janvier 2013

    Hello,
    Merci d’avoir partagé la solution ;)

  7. 25 janvier 2013

    Bonjour,

    Est ce qu’on peut limiter cette manipulation sur un seul navigateur ?
    J’aimerai forcer le téléchargement que sur IE.

    Merci de votre aide.

  8. Geoffrey dit :
    25 janvier 2013

    Je pense que ça doit être possible, mais je ne saurais trouver la syntaxe exact.
    Il est possible de rediriger une personne sur une autre URL en fonction de son navigateur : http://evansims.com/6032/using-htaccess-to-redirect-obsolete-browsers/, il faut juste trouver comment appliquer cette condition à une règle « type » (ForceType ou AddType). Hélas l’Apache n’est pas ma langue natale :p

Laisser un commentaire

Certains codes HTML ne sont pas échappés automatiquement. Pour afficher du code dans votre commentaire, merci d'échapper vos chevrons en utilisant "&lt;" et "&gt;" en lieu et place de "<"" et ">".

Il est difficile de proposer un support pour tous les articles de ce blog. En ne fournissant pas un moyen de consulter votre code bogué, vous vous assurez de ne pas avoir de réponse adaptée.

 
Le studio web