Ajouter un type mime au lien HTML

Je sais comment changer le type MIME dans un serveur web. Je l'ai utilisé pour m'assurer que le navigateur télécharge mon .fichier scrpt au lieu d'ouvrir la version en texte brut. C'est très 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 en tant que fichier texte brut. Puis-je ajouter un "attribut de type MIME" au lien pour indiquer au navigateur de télécharger le fichier?

C'est ce que je voudrais voir:

<a mimetype="application/octet-stream" href="http://gist.github.com/raw/279094/39d5a2c1037288d5ee0ba1a17dca9edb368bbe42/RepairiPhotoDates.scpt">download</a>
30
demandé sur Cimm 2010-01-21 18:14:56

4 réponses

Il est temps de répondre à ma propre question. C'est une question très 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 fera exactement ce dont j'ai besoin, dites au navigateur de télécharger le fichier au lieu de l'ouvrir. Merci à Jonathan Svärdén pour avoir résolu ma question vieille de plusieurs années!

34
répondu Cimm 2017-09-27 20:58:59

Vous pouvez spécifier un attribut Type , mais le type de contenu envoyé par le serveur fait autorité.

Cet attribut donne un conseil quant au type de contenu du contenu disponible à l'Adresse cible du lien. Il permet aux agents utilisateurs de choisir d'utiliser un mécanisme de secours 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.

À part ça, non, vous ne pouvez pas.

13
répondu Quentin 2010-01-21 15:16:26

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?

1
répondu doppelgreener 2010-01-21 15:24:09

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

0
répondu Martin Labuschin 2010-01-21 15:21:13