Ändern des Namens in der Kopfzeile für eine Ressource-Handler in C #
-
05-07-2019 - |
Frage
Ich habe einen Ressource-Handler, die Response.WriteFile (Dateiname) basierend auf einem Parameter durch die Abfragezeichenfolgeflag geführt ist. Ich bin Umgang mit dem MIME-Typ richtig, aber das Problem ist in einigen Browsern, der Dateiname als Res.ashx kommt (der Name des Handlers) anstelle von MyPdf.pdf (die Datei, die ich zum Ausgeben bin). Kann jemand informieren Sie mich, wie Sie den Namen der Datei zu ändern, wenn es wieder an den Server gesendet wird? Hier ist mein 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);
Lösung
Die Ausweitung von Joels Kommentar, Ihr eigentlicher Code in etwa so aussehen:
context.Response.AddHeader("content-disposition", "attachment; filename=" + resource);
Andere Tipps
Diese Scott Hanselman Post sollte hilfreich sein:
http://www.hanselman.com/blog/CommentView.aspx?guid= 360
Danke Jungs für Ihre Antwort. Der endgültige Code funktioniert und prüft, ob pdf.
if (extensionArray[extensionArray.Length - 1].ToLower() == "pdf")
context.Response.AddHeader("content-disposition",
"Attachment; filename=" + resource);