Domanda

Ho un gestore di risorse che è Response.WriteFile (fileName) basato su un parametro passato attraverso la stringa di query. Sto gestendo correttamente il mimetype, ma il problema è in alcuni browser, il nome del file viene visualizzato come Res.ashx (il nome del gestore) anziché MyPdf.pdf (il file che sto inviando). Qualcuno può informarmi su come modificare il nome del file quando viene rispedito al server? Ecco il mio codice:

// 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);
È stato utile?

Soluzione

Estendendo dal commento di Joel, il tuo vero codice sarebbe simile a questo:

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

Altri suggerimenti

Questo post di Scott Hanselman dovrebbe essere utile:
http://www.hanselman.com/blog/CommentView.aspx?guid= 360

Grazie ragazzi per la risposta. Il codice finale funziona e controlla il pdf.

if (extensionArray[extensionArray.Length - 1].ToLower() == "pdf")
    context.Response.AddHeader("content-disposition", 
        "Attachment; filename=" + resource);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top