2010-01-21 7 views
28

Je sais comment changer le type MIME dans un serveur web. J'ai utilisé ceci pour m'assurer que le navigateur télécharge mon fichier .scrpt au lieu d'ouvrir la version en texte brut. Jusqu'ici tout va bien mais est-il possible de faire la même chose avec un lien? Je voudrais créer un lien vers un fichier sur GitHub mais cela s'ouvrira comme un fichier texte. Puis-je ajouter un "attribut de type MIME" au lien pour indiquer au navigateur de télécharger le fichier?Ajouter un type mime au lien HTML

Voilà ce que je voudrais voir:

<a mimetype="application/octet-stream" href="http://gist.github.com/raw/279094/39d5a2c1037288d5ee0ba1a17dca9edb368bbe42/RepairiPhotoDates.scpt">download</a> 
+2

Le type MIME ne détermine pas si un fichier est visualisé ou téléchargé. C'est le navigateur qui décide, basé sur le type MIME et l'en-tête Content-Disposition. – Thomas

+0

J'ai le même problème: Le type MIME pour les fichiers que je veux servir n'est pas configuré par ma société d'hébergement, et il n'y a aucun moyen de changer cela. Est-il vraiment impossible de dire au navigateur dans le lien ce qu'il va télécharger? – James

Répondre

29

Il est temps de répondre à ma propre question. C'est une question vraiment ancienne et ce n'était probablement pas possible à l'époque mais beaucoup de choses ont changé depuis. La spécification HTML5 a ajouté l'attribut download:

<a href="hugepdf.pdf" download>Download file</a> 

Cela va faire exactement ce que je dois, dire au navigateur pour télécharger le fichier au lieu de l'ouvrir. Merci à Jonathan Svärdén pour avoir résolu ma vieille question!

+1

[C'est déprimant si] (http://caniuse.com/#search=download) – JensG

+0

@Cimm Pouvez-vous dire comment changer le type MIME dans le serveur web – Muthu

+0

@muthu Cela dépend du serveur web. Je vous suggère Google " type MIME" et posez une autre question sur SO si cela ne résout pas votre question. Ce n'est pas vraiment l'endroit pour poser cette question. – Cimm

13

Vous pouvez spécifier un type attribute, mais le type de contenu envoyé par le serveur fait foi.

Cet attribut donne un conseil relatif au type de contenu du contenu disponible à l'adresse cible du lien. Il permet aux agents utilisateurs d'opter pour un mécanisme de repli plutôt que de récupérer le contenu s'ils sont informés qu'ils obtiendront du contenu dans un type de contenu qu'ils ne prennent pas en charge.

Autre que cela, non, vous ne pouvez pas.

+0

J'ai essayé mais ça ne marche pas. Comme vous l'avez expliqué ... Merci pour l'explication claire. – Cimm

0

HTML n'est pas concerné par les en-têtes de réponse HTTP. Ceci est absolument un problème côté serveur, qui doit être résolu dans les en-têtes de réponse HTTP avant que le corps de réponse HTTP (/ content?) Ne soit envoyé. Sans un langage de script comme Ruby ou PHP, vous ne pouvez rien faire.

1

Pouvez-vous configurer un script intermédiaire qui télécharge le fichier en question sur le serveur, puis le télécharge à l'utilisateur avec un type MIME différent?