2012-09-07 16 views
5

que tengo en mi proyecto de una página DownloadDocument.aspx y es codebhind es DownloadDocument.aspx.csASP.NET añadir un HttpHandler para editar el nombre del archivo descargado

En mi DownloadDocument.aspx tengo un anclaje que tome un vínculo dinámico de esta manera:

<a id="downloadLink" runat="server" style="margin:5px" 
href="<%# CONTENT_DIRECTORY_ROOT + document.Path %>">Download current file</a> 

Quiero agregar un httphandler para controlar el nombre del archivo descargado, ¿Cómo puedo hacerlo? Gracias por adelantado.

Respuesta

16

¿Qué tal usar una controlador genérico (.ashx) para esto?

Debe agregar la carga de información específica, como nombre de archivo, contenttyp y el contenido en sí. La muestra debería darle una buena ventaja.

public class GetDownload : IHttpHandler 
{ 

    public void ProcessRequest(HttpContext context) 
    { 
     if (!string.IsNullOrEmpty(context.Request.QueryString["IDDownload"])) 
     { 
       context.Response.AddHeader("content-disposition", "attachment; filename=mydownload.zip"); 
       context.Response.ContentType = "application/octet-stream"; 
       byte[] rawBytes = // Insert loading file with IDDownload to byte array 
       context.Response.OutputStream.Write(rawBytes, 0, rawBytes.Length); 
     } 
    } 

    public bool IsReusable 
    { 
     get 
     { 
      return false; 
     } 
    } 
} 

El controlador genérico se llama desde una URL, así:

<a href="/GetDownload.ashx?IDDownload=1337">click here to download</a> 
3

depende del tipo de archivo que está intentando descargar ... porque cada solicitud se ha ido a través de HTTPHandler 's ProcessRequest. y comprueba todas y cada una de las solicitudes, una por una. Necesita agregar HTTPHandler a su proyecto y necesita agregar algo como esto en su web.config.

<httpHandlers> 
    <add path="*.jpg,*.jpeg,*.bmp,*.tif,*.tiff" verb="*" type="NameofYourHandler" /> 
</httpHandlers> 

Esto comprobará su solicitud para cada tipo Image .. mencionado en path atributo

Editar:

<add verb="*" path="*DownloadDocument.aspx " type="NameofYourHandler"/> 
+0

yo quiero que soporta ninguna extensión de archivo – Vervatovskis

+0

ver sección de edición ... esto va a registrar el controlador para su página de descarga, para cada solicitud independientemente de los tipos de archivos ... –

+0

excusa Mayank, en el tipo que acabo de poner el nombre del controlador o la ruta completa del controlador (soy nuevo en el entorno .NET) – Vervatovskis

0

Usted puede tratar con este código

<httpHandlers> 
    <add 
    verb="POST" 
    path="*.jpg,*.jpeg,*.bmp,*.tif,*.tiff" 
    type="YourHandler" /> 
</httpHandlers> 
Cuestiones relacionadas