127 votes

Comment définir le nom du fichier de réponse sans forcer le dialogue saveas

Je suis de retour d'un flux dans certaines configuration de réponse appropriée-tête content-type. Le comportement je suis à la recherche de est ceci:

  • Si le navigateur est capable d'afficher le contenu de ce type de contenu, alors il doit l'afficher dans la fenêtre du navigateur.

  • Si le navigateur ne sait pas comment rendre le contenu ensuite, il doit afficher la boîte de dialogue enregistrer sous, où le nom de fichier doit être fournie dans la réponse.

Le problème que si j'ai mis l'-tête Content-Disposition:

"attachment; filename="myfile.txt""

le navigateur affichera toujours le savesas boîte de dialogue.

Si je n'ai pas mis le Content-Disposition le nom du fichier utilisé dans la boîte de dialogue enregistrer sous est l'un dans l'url qui ne fonctionne pas dans mon cas.

J'ai aussi essayé de définir le Contenu-Disposition de inline, mais le résultat est le même.

180voto

Patonza Points 1585

La manière correcte pourrait être:

Content-Disposition: inline; filename="myfile.txt"

mais comme vous l'avez noté, il n'est pas largement supporté, alors oubliez ça .

Mais le vrai problème est que les données en ligne n’ont pas de nom de fichier (à part leur URL). Il est donc normal que les clients Web utilisent le nom de l'URL lors de l'enregistrement du fichier.

Le moyen le plus simple consiste à nommer vos URL avec le nom de fichier souhaité , en utilisant une sorte de réécriture d'URL.

2voto

Rubens Farias Points 33357

Je ne sais pas si c'est possible par défaut. Par souci de sécurité, le navigateur n’envoie pas tous les types de contenu qu’il peut gérer, mais seulement quelques Accept-Encoding , ce qui n’aidera pas beaucoup dans votre scénario.

Peut-être pouvez-vous demander à votre utilisateur ce qu'il / elle préfère et stocker ces informations dans son profil.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X