Hier, aux vues des statistiques du site j’ai décidé de mettre en téléchargement mon CV avant d’en faire un beau (plus tard) sur la page.
Et si vous avez bien vu, je propose soit de le visualiser au format PDF, soit de le télécharger au format PDF. Pour les non codeux, j’imagine que ça vous fait une belle jambe; Mais pour tous les codeux qui lisent ça, je pense que ça titille leurs intérêts. Car effectivement, tous les codeux savent qu’en faisant un lien vers un fichier PDF, celui s’affichera dans le navigateur de l’internaute, et ne sera pas proposer en téléchargement.
Donc voilà comment faire :
Beaucoup de choses se passent dans les communications entre votre navigateur et les serveurs web quand vous naviguez. Tout cela est totalement transparent pour les internautes, le seul moyen de visualiser ce qui se passe à ce niveau et d’utiliser des logiciels spéciaux. Si vous avez Firefox comme navigateur, vous pouvez utiliser l’extension LiveHTTPHeaders .
C’est justement là que le serveur envoie l’ordre d’afficher ou de télécharger tel ou tel type de fichier. L’histoire est donc d’influer sur cet ordre. Comment faire ? Plusieurs solutions s’offrent à vous, soit vous avez la main sur votre serveur et vous le configurer comme il se doit (soit par type d’extension, soit par répertoire), mais dans ce cas la vous êtes déjà un vrai killeur et mes solutions à deux balles vous vous asseyez dessus.
Soit, vous êtes un simple amateur et vous influez sur les entêtes http à l’aide de PHP ! (de la même façon que vous faites des redirection en php) Voila le code pour faire ce de quoi on parle (petit rappel pour ceux qui sont perdus : on parle de proposer un téléchargement à la place d’une visualisation : cela marche pour tous les types de fichier : image, texte, html , …)
<?php
header(”Content-Disposition: attachment; filename=\”nom que vous souhaitez donner au fichier\”");
readfile(”adressedu fichier en local ou non”);
exit();
?>
Dans cette histoire c’est le Content-Disposition: attachment; qui est important. Le filname qui suit sert à indiquer le nom que vous présenterez à l’internaute. Ce nom sera celui du fichier qu’il va télécharger (N’oubliez pas l’extention, c’est un peu con … Mais des pros l’oublient quand même. Exemple : http://www.zoo-mulhouse.com/ sur les liens “Brochure de présentation” et “Programme des animations 2008″ dans la colonne de droite il manque l’extension .pdf). Le dernier élément est bien sur l’adresse du fichier à telecharger sur votre hébérgement (ou celui d’un autre pkoi pas …).
Bon ici c’est dans le cas d’un téléchargement simple, apres rien ne vous interdit de faire ça avec des variables pour n’avoir qu’un seul fichier php qui gère tous vos téléchargements en passant les noms et adresses en variable. De plus la syntaxe ici est minimaliste, car en entête http, on peut faire passer plein de chose (encodage, content-type, taille, …), mais bon vous m’en voudrais pas si me m’assoie dessus, car je n’en vois pas l’utilité dans mon cas. Si je me trompe, dites le moi, je serais ravie d’en savoir plus.
(j’ai découvert ça plus ou moins par hasard en feuilletant des livres sur les configurations http quand j’etait en stage dans une entreprise éditrice de logiciels textile, mais bon je n’ai pas inventé la roue non plus)



