2008-10-09 9 views
16

Je dois diffuser un fichier dans la réponse pour l'enregistrer sur la machine de l'utilisateur final. Le fichier est en texte brut, quel type de contenu puis-je utiliser pour empêcher l'affichage du texte dans le navigateur?Quel type de contenu force le téléchargement de la réponse textuelle?

+0

connexes: [Ai-je besoin Content-Type: application/octet-stream pour le fichier télécharger? ] (http://stackoverflow.com/q/20508788/95735) –

Répondre

21

Pour être sur le côté sécuritaire et assurer un comportement cohérent dans tous les navigateurs, il est généralement préférable d'utiliser les deux:

Content-Type: application/octet-stream 
Content-Disposition: attachment;filename=\"My Text File.txt\" 
+4

Vous avez seulement besoin de la disposition du contenu, de cette façon vous pouvez garder un type de contenu pertinent, comme le texte/plain, ou peu importe. –

+1

@MattConnolly Où proposez-vous de * conserver un type de contenu pertinent * si vous n'utilisez pas l'en-tête 'Content-Type'? –

+1

Mauvaise réponse - voir http://stackoverflow.com/q/20508788/95735 –

6

Je ne pense pas que cela fonctionne de cette façon.

Utilisez un en-tête Content-Disposition: attachment, mais respectez le bon type de contenu.

+0

N'envoyez que «Content-Type: application/octet-stream» lorsque User-Agent est Internet Explorer 6 ... –

23

Dans la plupart des cas, ce qui suit devrait fonctionner:

Content-type: application/octet-stream 
Content-Disposition: attachment; filename="myfile.txt" 

Il y a quelques cas marginaux des navigateurs qui affichent toujours comme un fichier texte, mais aucun des navigateurs grand public vont (je parle navigateurs intégrés dans certains MID).


EDIT: Lorsque cette réponse a été publié à l'origine, l'envoi du Mime-type application/octet-stream était le seul moyen fiable pour déclencher un téléchargement dans certains navigateurs. Maintenant en 2016, si vous n'avez pas besoin de prendre en charge un ancien navigateur, vous pouvez en toute sécurité spécifier le bon type mime.

+0

Avez-vous besoin de mentir à propos du contenu? -type? Serait plus agréable si vous pouviez simplement utiliser Content-Disposition, qui/should/work. –

+0

Dans mon expérience, application/octet-stream le rend plus fiable dans tous les navigateurs. – ceejayoz

+0

^Ce qu'il a dit. Internet Explorer 6 peut toujours l'afficher en tant que texte si texte/plain est utilisé. –

Questions connexes