Changer le nom dans l'en-tête d'un gestionnaire de ressources en C #
-
05-07-2019 - |
Question
J'ai un gestionnaire de ressources appelé Response.WriteFile (NomFichier) basé sur un paramètre transmis via la chaîne de requête. Je gère correctement le type MIME, mais dans certains navigateurs, le nom du fichier est Res.ashx (nom du gestionnaire) au lieu de MyPdf.pdf (le fichier que je produis). Est-ce que quelqu'un peut me dire comment changer le nom du fichier quand il est renvoyé au serveur? Voici mon code:
// Get the name of the application
string application = context.Request.QueryString["a"];
string resource = context.Request.QueryString["r"];
// Parse the file extension
string[] extensionArray = resource.Split(".".ToCharArray());
// Set the content type
if (extensionArray.Length > 0)
context.Response.ContentType = MimeHandler.GetContentType(
extensionArray[extensionArray.Length - 1].ToLower());
// clean the information
application = (string.IsNullOrEmpty(application)) ?
"../App_Data/" : application.Replace("..", "");
// clean the resource
resource = (string.IsNullOrEmpty(resource)) ?
"" : resource.Replace("..", "");
string url = "./App_Data/" + application + "/" + resource;
context.Response.WriteFile(url);
La solution
En prolongement du commentaire de Joel, votre code actuel ressemblerait à ceci:
context.Response.AddHeader("content-disposition", "attachment; filename=" + resource);
Autres conseils
Ce message de Scott Hanselman devrait être utile:
http://www.hanselman.com/blog/CommentView.aspx?guid= 360
Merci les gars pour votre réponse. Le code final fonctionne et vérifie le format pdf.
if (extensionArray[extensionArray.Length - 1].ToLower() == "pdf")
context.Response.AddHeader("content-disposition",
"Attachment; filename=" + resource);