Modifica del nome nell'intestazione per un gestore risorse in C #
-
05-07-2019 - |
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);
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);