码迷,mamicode.com
首页 > 其他好文 > 详细

ashx实现文件下载

时间:2016-01-11 19:49:30      阅读:359      评论:0      收藏:0      [点我收藏+]

标签:

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]获取

ashx实现文件下载

标签:

原文地址:http://www.cnblogs.com/fuhai/p/5122053.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!