ASP.NET中添加的HttpHandler编辑下载的文件名(ASP.NET add a httph

2019-06-27 23:40发布

我在我的项目页面DownloadDocument.aspx ,它的codebhind是DownloadDocument.aspx.cs

在我DownloadDocument.aspx我有采取动态链接这样一个锚:

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

我想添加一个HttpHandler的控制下载的文件名,我该怎么办呢? 提前致谢。

Answer 1:

如何使用这种通用处理器(ashx的)?

您需要添加加载特定信息,如文件名,contenttyp和内容本身。 样品应该给你一个很好的领先地位。

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

通用处理器是由URL调用,就像这样:

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


Answer 2:

它取决于类型,您试图下载文件的...因为每个请求走过HTTPHandlerProcessRequest 。 和它的检查每一个请求逐一..你需要任何添加HTTPHandler到您的项目和需要增加这样的事情在你web.config

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

这将检查你的每个请求Image类型..中提到path属性

编辑:

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


Answer 3:

您可以使用此代码尝试

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


文章来源: ASP.NET add a httphandler to edit downloaded file name