C#文件下载(适用于各个浏览器)

1、cs代码

复制代码
 1 public void DownFile(string filePath ,string fileName )
 2 {
 3  // filePath  文件路径 例如:/File/记录.xlsx 
 4 
 5  // fileName  文件名称 例如:记录.xlsx (要后缀哦)
 6 Encoding encoding; // 申明编码
 7 string outputFileName; // 输出名字
 8 Debug.Assert(HttpContext.ApplicationInstance.Request.UserAgent != null, "HttpContext.ApplicationInstance.Request.UserAgent != null");
 9 string browser = HttpContext.ApplicationInstance.Request.UserAgent.ToUpper();
10 // 微软的浏览器和ie过滤
11 if (browser.Contains("MS") && browser.Contains("IE"))
12 {
13 outputFileName = HttpUtility.UrlEncode(filePath);
14 encoding = Encoding.Default;
15 }
16 //火狐
17 else if (browser.Contains("FIREFOX"))
18 {
19 outputFileName = fileName;
20 encoding = Encoding.GetEncoding("GB2312");
21 }
22 else
23 {
24 outputFileName = HttpUtility.UrlEncode(fileName);
25 encoding = Encoding.Default;
26 }
27 
28 string absoluFilePath = Server.MapPath(filePath); //获取上传文件路径
29 FileStream fs = new FileStream(absoluFilePath, FileMode.Open);
30 byte[] bytes = new byte[(int)fs.Length];
31 fs.Read(bytes, 0, bytes.Length);
32 fs.Close(); //关闭流,释放资源
33 HttpContext.ApplicationInstance.Response.Clear();
34 HttpContext.ApplicationInstance.Response.Buffer = true;
35 HttpContext.ApplicationInstance.Response.ContentEncoding = encoding;
36 HttpContext.ApplicationInstance.Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", string.IsNullOrEmpty(outputFileName) ? DateTime.Now.ToString("yyyyMMddHHmmssfff") : outputFileName));
37 Response.BinaryWrite(bytes);
38 Response.Flush();
39 HttpContext.ApplicationInstance.Response.End();
40 }
复制代码

2、html代码

前端HTML 写一个a标签就好:如 <a href='DownFile' target='_blank'>文件下载</a>

 

posted @   陈逸子风  阅读(7014)  评论(1编辑  收藏  举报
编辑推荐:
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
点击右上角即可分享
微信分享提示