ASP.NET add a httphandler to edit downloaded file name

╄→尐↘猪︶ㄣ 提交于 2020-01-21 07:00:07

问题


I have in my project a page DownloadDocument.aspx and it's codebhind is DownloadDocument.aspx.cs

In my DownloadDocument.aspx i have an anchor which take a dynamic link like this:

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

I want to add a httphandler to control the file name downloaded, How can i do it? Thanks in advance.


回答1:


How about using a generic handler (.ashx) for this?

You need to add loading specific information, like filename, contenttyp and the content itself. The sample should give you a good headstart.

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;
        }
    }
}

The generic handler is called from a URL, like this:

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



回答2:


it depends on type of file you are trying to download...because every request is gone through HTTPHandler's ProcessRequest. and it's checks each and every request one by one.. You need to add any HTTPHandler to your project and need to add something like this in your web.config.

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

This will check your request for every Image type.. mentioned in path attribute

Edit :

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



回答3:


You can try with this code

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


来源:https://stackoverflow.com/questions/12318715/asp-net-add-a-httphandler-to-edit-downloaded-file-name

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!