Forcer le download d'un lien - HTML/CSS - Programmation
Marsh Posté le 20-09-2005 à 10:27:04
J'ai trouvé des solutions, mais le problème, c'est qu'il s'agit que de solutions en PHP :
function ForceFileDownload($file){
$filesize = @filesize($file);
header("Content-Disposition: attachment; filename=".$file);
header("Content-Type: application/octet-stream" );
header("Content-Type: application/force-download" );
header("Content-Type: application/download" );
header("Content-Transfer-Encoding: binary" );
header("Pragma:no-cache" );
header("Expires:0" );
@set_time_limit(600);
readfile($file);
}
Et je ne souhaite pas utiliser de PHP.
Une solution en javascript me convient par contre.
Marsh Posté le 20-09-2005 à 10:32:26
Tu sera bien obligé d'utiliser PHP (ou tout autre techno côté serveur) car c'est le serveur qui définit les headers et le navigateur client ne réagit que suivant les headers.
Marsh Posté le 20-09-2005 à 10:35:50
Bidem a écrit : Tu sera bien obligé d'utiliser PHP (ou tout autre techno côté serveur) car c'est le serveur qui définit les headers et le navigateur client ne réagit que suivant les headers. |
Il peut aussi associer un MIME octet-stream à certains fichiers (genre *.csv) dans son httpd.conf
Marsh Posté le 20-09-2005 à 10:44:20
Ah, tu m'interresse.
Peux tu m'en dire un peux plus ?
J'vois dans le fichier http.conf qu'il y a :
#
# DefaultType is the default MIME type the server will use for a document
# if it cannot otherwise determine one, such as from filename extensions.
# If your server contains mostly text or HTML documents, "text/plain" is
# a good value. If most of your content is binary, such as applications
# or images, you may want to use "application/octet-stream" instead to
# keep browsers from trying to display binary files as though they are
# text.
#
DefaultType text/plain
Faut-il que je modifie quelque chose ici ?
Marsh Posté le 20-09-2005 à 10:49:46
Plus bas tu trouveras normalement quelques directives commençant par "AddType" (si tu les trouve pas, il y a sûrement un placeholder).
Là, tu ajoutes un truc du style
AddType application/octet-stream .csv |
et Apache enverra tous les fichiers ".csv" avec un header "application/octet-stream" automatiquement.
Ce que tu as cité, c'est la définition du type MIME par défaut (quand le type de fichier ne figure pas dans les types connus par Apache)
Marsh Posté le 20-09-2005 à 10:54:46
Quand tu dis :
"Apache enverra tous les fichiers ".csv" avec un header "application/octet-stream" automatiquement"
C'est à dire, qu'il ne tentera pas d'ouvrir mon fichier dans la page actuel mais bien forcer l'option 'enregistrer sous' ???
Désolé d'être redonnant, c'ets pour être sur.
Marsh Posté le 20-09-2005 à 11:01:23
Bon ben désolé de te dire que ca ne fonctionne pas...
Il m'affiche tout de même mon fichier à l'écran...
Marsh Posté le 20-09-2005 à 11:07:22
T'as pensé à relancer apache?
Marsh Posté le 20-09-2005 à 15:26:23
On sait faire des choses de dingue en programmation et le simple fait de vouloir ouvrir un fichier en mode 'enregistrer sous' sans utiliser le php nous procure autant de problème ???
VIVE L'INFORMATIQUE ! ! !
Marsh Posté le 20-09-2005 à 15:48:08
C'est pas par ce qu'on est des programmeur plus ou moins bon (et trés bon pour certain) qu'on est capable de modifier le navigateur du client sans son consentement.
Il y a des limites à tout et là les limites, c'est le comportement du navigateur et IE à la facheuse habitude de chercher à analyser ce qu'on lui envoie sans faire confiance à 100% à ce qu'on lui dit et pire, il réagit pas toujours pareil en fonction des sous versions.
PS : Si ca marche pas, pleins toi à microsoft.
Marsh Posté le 20-09-2005 à 15:52:36
joey_joe a écrit : On sait faire des choses de dingue en programmation et le simple fait de vouloir ouvrir un fichier en mode 'enregistrer sous' sans utiliser le php nous procure autant de problème ??? |
T'as essayé avec Opera ou Firefox
Marsh Posté le 20-09-2005 à 16:47:22
La méthode a utiliser est celle la : <a href="tonfichier_a_telecharger" type="octet-stream">Telecharger</a>
Cependant IE ne tient pas compte du type specifié par le developpeur ... la seule solution c'est donc d'utiliser un script serveur qui envoie l'en-tete content-type qui va bien (octet-stream) au navigateur.
Marsh Posté le 20-09-2005 à 09:02:10
Bonjour à tous,
Dans une page HTML, j'ai un lien vers un fichier csv.
Selon les navigateurs, lors du clic sur ce lien, le fichier s'ouvre directement dans la page (IE reconnait le format Excel) ou lance une fenetre 'enregistrement sous'.
Je souhaiterai en fait, forcer ma page à vouloir télécharger ce fichier et non à l'ouvrir.
Comment puis-je procéder sans utiliser l'option '<a target="_blank">'.
Joey.