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);
Était-ce utile?

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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top