Malheureusement la solution proposé dans le lien de
@r e m y reste encore souvent non reconnu par beaucoup de navigateur. Par exemple chez moi cela ne fonctionne pas (Opera 55, Safari 10.1.1, Firefox 62.0.3).
Moi je fais avec PHP.
Soit un fichier "telecharger.php" à la racine de ton site par exemple :
Bloc de code:
<?php
// on essaie de reconnaitre l'extension pour que le téléchargement corresponde au type de fichier afin d'éviter les erreurs de corruptions
switch(strrchr(basename($File), ".")) {
case ".gz": $type = "application/x-gzip"; break;
case ".tgz": $type = "application/x-gzip"; break;
case ".zip": $type = "application/zip"; break;
case ".pdf": $type = "application/pdf"; break;
case ".png": $type = "image/png"; break;
case ".gif": $type = "image/gif"; break;
case ".jpg": $type = "image/jpeg"; break;
case ".txt": $type = "text/plain"; break;
case ".htm": $type = "text/html"; break;
case ".html": $type = "text/html"; break;
case ".mp4": $type = "video/mp4"; break;
default: $type = "application/octet-stream"; break;
}
header("Content-disposition: attachment; filename=$File");
header("Content-Type: application/force-download");
header("Content-Transfer-Encoding: $type\n"); // Surtout ne pas enlever le \n
header("Content-Length: ".filesize($chemin . $File));
header("Pragma: no-cache");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public");
header("Expires: 0");
readfile($chemin . $File);
?>
Ensuite tu n'as plus qu'à écrire tes liens dont tu veux absolument un téléchargement comme cela :
Bloc de code:
<a href="telecharger.php?File=toto.pdf&chemin=nom_du_dossier_ou_se_trouve_toto/"TOTO</a>
toto.pdf est le nom du fichier que tu veux faire télécharger.
nom_du_dossier_ou_se_trouve_toto , par exemple
dossier_pdf (là où se trouve le fichier toto.pdf).
Exemple à tester :
ICI