web-dev-qa-db-fra.com

PDF Gestionnaire: nom du fichier de disposition du contenu

Je produis un fichier PDF dans un navigateur Web (IE8) HttpContext.Response.writefile(fileName) et cela fonctionne très bien. Lorsque j'essaie de sauvegarder le fichier, il me donne le nom du gestionnaire ashx par défaut. Je voudrais vraiment passer le vrai nom.

J'ai essayé d'ajouter les informations d'en-tête comme suit:

context.Response.AddHeader("content-disposition", "attachment; filename=" + fileInfo.Name);

Et cela fonctionne, mais je ne veux pas que l'utilisateur ait à choisir entre ouvrir et enregistrer, je veux que le fichier s'ouvre normalement et si l'utilisateur choisit de le sauvegarder, la boîte de dialogue lui donnera le nom de fichier par défaut.

J'ai essayé aussi:

context.Response.AddHeader("content-disposition", "inline; filename=" + fileInfo.Name);

Ou simplement, comme suggéra Scott Hanselman dans son blog .

context.Response.AddHeader("content-disposition", "filename=" + fileInfo.Name);

Aucun de ceux qui travaillent pour moi. Est-ce que quelqu'un a des idées?

13
user2062308

Voir les cas de test sur http://greenbytes.de/tech/tc2231/#inlwithasciifilenamepdf - il semble que ce soit tout simplement une fonctionnalité manquante dans IE.

12
Julian Reschke

Dans le cas de INLINE, il semble qu'Internet Explorer utilise le dernier paramètre de l'URL pour générer le nom de fichier . Par exemple, si votre URL est http://doc.com/131231231 IE Vous êtes invité à enregistrer le fichier sous le nom 131231231.pdf Si vous avez besoin d'un nom de fichier, par exemple, foo_131231231.pdf , Vous pouvez pirater le fichier IE à l'aide de cette adresse URL: http://doc.com/ foo_131231231 Vous risquez de changer un peu votre application pour vous attendre à un paramètre aussi laid, mais à la fin, votre application fonctionnera comme prévu.

3
LyuboBG

J'ai aussi rencontré ce problème… .. Ce qui m'a aidé, c'est aussi de définir le type de contenu sur application/pdf (au lieu de application/x-pdf, qui est obsolète)

response.setContentType("application/pdf");
response.setHeader("Content-disposition", "inline; filename=\"Report.pdf\"");
2
zeisi