Pregunta

Tengo un controlador de recursos que es Response.WriteFile (fileName) basado en un parámetro pasado a través de la cadena de consulta. Estoy manejando el mimetype correctamente, pero el problema está en algunos navegadores, el nombre del archivo aparece como Res.ashx (el nombre del controlador) en lugar de MyPdf.pdf (el archivo que estoy publicando). ¿Alguien puede informarme cómo cambiar el nombre del archivo cuando se envía de vuelta al servidor? Aquí está mi código:

// 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);
¿Fue útil?

Solución

Extendiéndose del comentario de Joel, su código real se vería así:

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

Otros consejos

Esta publicación de Scott Hanselman debería ser útil:
http://www.hanselman.com/blog/CommentView.aspx?guid= 360

Gracias chicos por su respuesta. El código final funciona y verifica el pdf.

if (extensionArray[extensionArray.Length - 1].ToLower() == "pdf")
    context.Response.AddHeader("content-disposition", 
        "Attachment; filename=" + resource);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top