ashx实现文件下载

cs

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.IO;
 6 using System.Security.Cryptography;
 7 using System.Text;
 8 namespace WebApplication1.handle
 9 {
10     /// <summary>
11     /// serverDownLoad 的摘要说明
12     /// </summary>
13     public class serverDownLoad : IHttpHandler
14     {
15
16         public void ProcessRequest(HttpContext context)
17         {
18
19             string id = context.Request.Params["Id"].ToString();
20             string name = context.Request.Params["name"].ToString();
21             Console.WriteLine(id);
22             Console.WriteLine(name);
23             using (FileStream fsRead = new FileStream(@"D:\1.xlsx", FileMode.Open))
24             {
25                 //文件读入byte数组中
26                 int fsLen = (int)fsRead.Length;
27                 byte[] heByte = new byte[fsLen];
28                 int r = fsRead.Read(heByte, 0, heByte.Length);
29
30                 //byte数组转换成字符串
31                 heByte = System.Text.Encoding.Convert(System.Text.Encoding.GetEncoding("gb2312"), System.Text.Encoding.UTF8, heByte);
32                 string myStr = System.Text.Encoding.UTF8.GetString(heByte);
33                 string myStr1 = System.Text.Encoding.Unicode.GetString(heByte);
34                 Console.WriteLine(myStr);
35
36                 //byte数组生成文件的MD5码
37                 {
38                     MD5 md5 = new MD5CryptoServiceProvider();
39                     byte[] retVal = md5.ComputeHash(heByte);
40                     StringBuilder sb = new StringBuilder();
41                     for (int i = 0; i < retVal.Length; i++)
42                     {
43                         sb.Append(retVal[i].ToString("x2"));
44                     }
45                     string fileMD5 = sb.ToString();
46
47                 }
48
49                 fsRead.Close();
50
51                 //文件下载
52                 context.Response.Buffer = true;
53                 context.Response.Clear();
54                 context.Response.ContentType = "application/octet-stream";
55                 context.Response.AddHeader("content-disposition", "attachment;filename=1.xlsx");
56                 context.Response.BinaryWrite(heByte);
57                 context.Response.Flush();
58                 context.Response.End();
59             }
60         }
61
62         public bool IsReusable
63         {
64             get
65             {
66                 return false;
67             }
68         }
69     }
70 }

使用的时候直接在a标签的href中指向该ashx就可以了,也可以用javascript来实现,href后面添加?Paramsname1=Paramsvalue1&Paramsname2=Paramsvalue2来来实现传参

1 window.location.href = "handle/serverDownLoad.ashx/DownLoad?Id=123&name=fuhai";

获取参数的时候用context.Request.Params[Paramsname]获取

时间: 2024-10-05 21:26:53

ashx实现文件下载的相关文章

ASP.Net Web ajax请求ashx服务实现文件下载

具体功能为,在文件数据列表中选择一行,点击表格上方的下载按钮,下载文件.由于表格中不包含文件路径,只能取到在数据库表中的ID,所以具体实现就是这样:首先点击一行,获取点击的一行数据的ID,用Ajax传值到Ashx服务文件,在Ashx中根据ID取到文件路径,转换为服务器虚拟路径后返回到Web页面.在Web页面中用Ajax进行下载. 一开始尝试过直接在Ashx服务处理中response.writeFile(),结果不能下载,原因可能是因为Ajax请求,而返回的时候直接返回到了Ajax的回调函数中.于

HttpHandler与HttpModule及实现文件下载

HttpHandler:处理请求(Request)的信息和发送响应(Response).HttpModule:通过Http Module向Http请求输出流中写入文字,httpmodule先执行 它们两个的区别:页面处理程序在处理过程中,要经历HttpModule,HttpHandler的处理HttpModule用于页面处理前和处理后的一些事件的处理,HttpHandler进行真正的页面的处理.HttpModule会在页面处理前和后对页面进行处理,所以它不会影响真正的页面请求.通常用在给每个页面

asp.net使用一般处理程序实现文件下载

首先有一个html页面,页面有一个链接,点击链接弹出文件下载/保存(类似迅雷下载链接) <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>文件下载</title> <meta charset="utf-8" /

Bootstrap + AngularJS+ Ashx + SQL Server/MySQL

去年年底12月,为适应移动端浏览需求,花了1个月时间学习Bootstrap,并将公司ASP网站重构成ASP.NET. 当时采取的网站架构: Bootstrap + jQuery + Ashx + SQL Server 时间紧,没人带,只能硬着头皮,最后如期完成,但是也遗留了几个问题. 问题: 1.页面查询条件太复杂,太多的checkbox,jQuery操作DOM虽然方便,但是组合成json提交给后端还是比较麻烦,有没有天然支持json的前端框架或者脚本语言? html控件做的任何修改,都自动保存

PHP实现文件下载

PHP实现文件下载 PHP下载文件 js下载文件 项目操作中不可避免要提供文件的下载,有时候要写一些逻辑判断或者提示啥,那下载的方法就需要做些调整.做个下载文件的集锦: readfile — 输出文件 (手册上有说明:读入一个文件并写入到输出缓冲.) <?php $file = 'monkey.gif' ; if ( file_exists ( $file )) { header ( 'Content-Description: File Transfer' ); header ( 'Conten

struts2文件下载

<!-- 文件下载 --> <action name="download" class="cn.action.demo2.DownloadAction"> <!-- 返回 流结果 --> <result type="stream"> <!-- inputName 用于指定 返回输入流的方法名 默认值 inputStream --> <!-- targetFile 需要在Action

bootstrap table 服务器端分页--ashx+ajax

1.准备静态页面 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title></title> 6 <meta charset="utf-8" /> 7 <link rel="

Struts2 多文件下载

Step1:导入支持jar包 commons-fileupload-1.3.1.jar commons-io-2.4.jar jstl-1.2.jar standard-1.1.2.jar commons-compress-1.10.jar 文件压缩工具包 Step2:编写请求下载jsp <script type="text/javascript" src="jquery-1.8.3.js"></script> <%@taglib pr

asp、asp.net、.aspx、.ascx、.ashx的简单说明

ASP是动态服务器页面(Active Server Page)的英文缩写.[1]是微软公司开发的代替CGI脚本程序的一种应用,它可以与数据库和其它程序进行交互,是一种简单.方便的编程工具.ASP的网页文件的格式是.asp.现在常用于各种动态网站中. ASP.NET是由微软在·NETFramework框架中所提供,开发Web应用程序的类库,封装在System.Web.dll文件中,显露出System.Web命名空间,并提供ASP.NET网页处理.扩充以及HTTP通道的应用程序与通信处理等工作,以及