C# 一般处理程序下载文件

原创 2016年08月31日 12:29:35

利用一般处理程序下载文件,会在很多时候用到,但是,这是一条不归路啊,路上各种坑,不是乱码就是下载不下来。同样,今天我也踩上了这颗雷。还好,我是排雷兵,一样一样的排除

C# code

 //文件下载
        public void downloadfile(HttpContext context, string s_fileName)
        {
            string path = s_fileName;
            System.IO.FileInfo file = new System.IO.FileInfo(System.Web.HttpContext.Current.Server.MapPath(path));
            context.Response.Clear();
            context.Response.Charset = "UTF-8";
            context.Response.ContentEncoding = System.Text.Encoding.UTF8;
            context.Response.AddHeader("Content-Type", "application/octet-stream");
            // 添加头信息,为"文件下载/另存为"对话框指定默认文件名,设定编码为UTF8,防止中文文件名出现乱码
            context.Response.AddHeader("Content-Disposition","attachment; filename="+ System.Web.HttpUtility.UrlEncode(file.Name, System.Text.Encoding.UTF8));
            // 添加头信息,指定文件大小,让浏览器能够显示下载进度
            context.Response.AddHeader("Content-Length", file.Length.ToString());
            //// 指定返回的是一个不能被客户端读取的流,必须被下载
            context.Response.ContentType = "application/ms-excel";
            // 把文件流发送到客户端
            context.Response.WriteFile(file.FullName);
            // 停止页面的执行
            context.Response.End();
        }

注意:html页面一定不能是用ajax去请求一般处理程序,否则累死也实现不了下载,他会永远给你弹出一个框,一面一堆乱码

一定要同<a href="....../a.ashx">下载</a>这样的请求方式才可以,需要传参的话,直接在后面拼上就行

这样,轻轻松松搞定


版权声明:本文为博主原创文章,未经博主允许不得转载。

asp.net利用一般处理程序下载和在线查看文档

传输文件路径给一般处理程序    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)   ...
  • woshixuye
  • woshixuye
  • 2012年01月25日 09:29
  • 2255

ashx一般处理程序

.NET里面webform的后缀是aspx WCF和WebService的后缀是asmx 然后今天拿到一个客户端代码,调用服务端,服务端后缀是ashx瞬间傻蛋了,.NET我不知道的组件真多。 四个...
  • wanda39kela
  • wanda39kela
  • 2015年05月28日 10:19
  • 28118

C# ashx一般处理程序Header设置

//数据不缓存 context.Response.Cache.SetNoStore(); //输出编码格式,设置为UTF-8格式字符串 ...
  • yan_hyz
  • yan_hyz
  • 2017年01月06日 19:55
  • 1046

C#创建使用一般处理程序.ashx

using System;   using System.Web;   public class testHandler : IHttpHandler   {    publi...
  • xmlife
  • xmlife
  • 2016年06月11日 14:06
  • 1349

c# 一般处理程序(Jquery ajax调用)

一般处理程序代码 using System; using System.Collections.Generic; using System.Data; using System.Linq; using...
  • czh4869623
  • czh4869623
  • 2014年12月10日 10:50
  • 3712

c#在一般处理程序中使用session

c#一般处理程序中继承的是IHttpHandler 在里面无法访问session HttpContext.Current.Session返回的是NULL, 处理方法  : 1,导入:usi...
  • nanshan_hzq
  • nanshan_hzq
  • 2015年11月06日 17:29
  • 1201

c#一般处理程序接收参数

1.context.Request.QueryString["RateAmount"].ToString().Trim();获取地址栏里的 2.context.Request.Params["Rat...
  • listenwrong
  • listenwrong
  • 2013年03月12日 16:29
  • 2236

ashx灵活处理文件下载问题

新建一般处理程序 ,改下面的函数:         public void ProcessRequest(HttpContext context)         {             s...
  • pukuimin1226
  • pukuimin1226
  • 2012年06月23日 13:51
  • 6348

C# winform程序怎么打包成安装项目(图解)

http://www.sufeinet.com/thread-2186-1-1.html 1:新建安装部署项目 打开VS,点击新建项目,选择:其他项目类型->安装与部署->安装向导(安装项目也一样),...
  • u011981242
  • u011981242
  • 2016年04月04日 23:16
  • 27973

C#小程序(30个)

  • 2008年11月03日 21:22
  • 28KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C# 一般处理程序下载文件
举报原因:
原因补充:

(最多只允许输入30个字)