2008-10-30 9 views
3

J'ai un gestionnaire de ressources Response.WriteFile (nomfichier) basé sur un paramètre transmis via la chaîne de requête. Je gère correctement le type MIME, mais le problème est dans certains navigateurs, le nom de fichier apparaît comme Res.ashx (Le nom du gestionnaire) au lieu de MyPdf.pdf (le fichier que je produis). Est-ce que quelqu'un peut m'informer comment changer le nom du fichier quand il est renvoyé au serveur? Voici mon code:Modification du nom dans l'en-tête d'un gestionnaire de ressources en C#

// 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); 

Répondre

4

Extension du commentaire de Joel, votre code devrait ressembler à quelque chose comme ceci:

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

Merci les gars pour votre réponse. Le code final fonctionne et vérifie le pdf.

if (extensionArray[extensionArray.Length - 1].ToLower() == "pdf") 
    context.Response.AddHeader("content-disposition", 
     "Attachment; filename=" + resource);