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>这样的请求方式才可以,需要传参的话,直接在后面拼上就行

这样,轻轻松松搞定


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

相关文章推荐

C#+一般处理程序+jquery.uploadify 上传XML文件并插入数据库中

效果如图: 上传前 上传中 HTML代码:

文件上传 下载 一般处理程序和webForm联系以及asp.net内置对象

1.HttpHandler实现图片上传 (1).表单元素使用 文件选择框 控件。 (2).表单设置enctype="multipart/form-data",本质上就是设置浏览器提交表单的数据时,...

C#注册控件处理程序(SetConsoleCtrlHandler)函数示例 控制台关闭事件改写

添加或删除应用程序定义的HandlerRoutine从调用进程的处理函数列表功能。Win32 API功能:添加或删除应用程序定义的HandlerRoutine从调用进程的处理函数列表功能。函数原型:B...

C#事件处理程序的写法

事件的概念 原则: 1、C#事件本质就是对消息的封装,用作对象之间的通信;发送方叫事件发送器,接收方叫事件接收器; 2、发送器不知道接收器的任何情况,但接收器有一个事件处理程序来处理...

head first C#学习笔记:如何创建事件以及事件处理程序

编写一个棒球模拟系统。要达到的效果:输入棒球的轨迹和距离,输出其他对象的响应(投球手能否接到球,现场观众如何反应,裁判如何反应等。) 在创建这个事

编写高效的C#图像处理程序

前些天阅读《各种图像处理类库的比较及选择(The Comparison of Image Processing Libraries)》,对后面的比较结果感觉怪异。对计算密集型运算,C#和C/C++的性...

C#使用EPPlus.dll动态库在一般处理程序中实现将datatable导出到excel

一、.如何安装EPPLus 1.在Visual Studio的解决方案的引用上右键选择管理NeGet程序包 2.在管理NuGet程序包中搜索EPPlus,点击进行安装,安装后便直接添加到引用了...

ASP.NET-C# Post 一般处理程序(ashx)并得到返回值

var postUrl = "http://xxx.com/xxp/LoginInfo.ashx"; var postString = "method=CheckPW&id=4454556289...

第八周项目1.2 多文件处理程序

#include #include"tou.h" #include #include #define size 500 using namespace std; int main() { c...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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