ASP.NET 文件下载

来源:互联网 发布:apache测试页面 编辑:程序博客网 时间:2024/05/21 09:55
下载页面:
 <a href="download.ashx?url=<%=Server.UrlEncode("说明.txt")%>">下载</a>
------------------------------------------------------------------------------
download.ashx
<%@ WebHandler Language="C#" Class="download" %>using System;using System.Web;public class download : IHttpHandler {       public void ProcessRequest (HttpContext context) {        string url = HttpContext.Current.Server.UrlDecode(context.Request.QueryString["url"]);        downloadfile(url);    }     public bool IsReusable {        get {            return false;        }    }    public void downloadfile(string s_fileName)    {       HttpContext.Current.Response.ContentType = "application/ms-download";       string s_path = HttpContext.Current.Server.MapPath("~/") + s_fileName;       System.IO.FileInfo file = new System.IO.FileInfo(s_path);       HttpContext.Current.Response.Clear();       HttpContext.Current.Response.AddHeader("Content-Type", "application/octet-stream");       HttpContext.Current.Response.Charset = "utf-8";       string filename = file.Name;       string userAgent = HttpContext.Current.Request.ServerVariables["http_user_agent"].ToLower();       //处理firefox保存时文件名乱码的问题       if (userAgent.IndexOf("firefox") == -1)           filename = HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8);         HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + filename);       HttpContext.Current.Response.AddHeader("Content-Length", file.Length.ToString());       HttpContext.Current.Response.WriteFile(file.FullName);       HttpContext.Current.Response.Flush();       HttpContext.Current.Response.Clear();       HttpContext.Current.Response.End();    }}
原创粉丝点击