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);
War es hilfreich?

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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top