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

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>
时间: 2024-10-06 18:53:09

文件下载(适用于各个浏览器)的相关文章

文件下载 兼容所有浏览器

文件下载 兼容所有浏览器 download.js文件下载,几乎支持所有类型下载,详细内容参考官网 http://danml.com/download.html 引入文件 <script src='//js.zapjs.com/js/download.js'></script> <script src='//code.jquery.com/jquery-1.9.1.min.js'></script> html <body> <ul> &

SeaJS:一个适用于 Web 浏览器端的模块加载器

什么是SeaJS?SeaJS是一款适用于Web浏览器端的模块加载器,它同时又与Node兼容.在SeaJS的世界里,一个文件就是一个模块,所有模块都遵循CMD(Common Module Definition)规范.SeaJS本身遵循(Keep it Simple, Stupid)理念开发,API仅有几个. 为什么用SeaJS?假如我们要开发一个web应用App,在这个应用中需要使用jquery框架.App的首页index.html会用到module1.js,module1.js依赖module2

自定义滚动条样式 --- 适用于webkit浏览器 Google Chrome 和 Opera

适用于Google Chrome 和 Opera浏览器的滚动条自定义样式 ::-webkit-scrollbar //滚动条整体部分,其中的属性有width,height,background,border(就和一个块级元素一样)等.(位置1) ::-webkit-scrollbar-button //滚动条两端的按钮.可以用display:none让其不显示,也可以添加背景图片,颜色改变显示效果.(位置2) ::-webkit-scrollbar-track  // 外层轨道.可以用displ

js调用打印机自动分页的功能(仅适用于IE浏览器)

做个功能需要打印的时候添加分页,哪怕是内容不够也需要分页. 浏览器上显示 打印预览是这样的: 模拟打印出来是这样的 都是显示的是5页,方法很简单.在需要分页的位置加上一行代码: <div class="PageNext"></div> css样式是这样的: .PageNext{page-break-after: always;} 以上就是实现的打印分页的功能. 另外有几个打印的常用方法记录一下. 1.调用打印的方法: wb.execwb(6,6) 2.调用打印预

解决文件下载在火狐浏览器出现中文文件名乱码的方法

笔者最近写了个导出Excel的工具,后面发现在火狐浏览器下载的文件的文件名是一串看不懂的字母. 后面找到了解决方法,下面直接上代码. /** 下载时文件名为中文:乱码解决 */ // 响应的过程: // 服务器: utf-8|gbk --> iso8859-1 浏览器: iso8859-1 --> utf-8|gbk (firefox.chrome) // 服务器: gbk --> iso8859-1 浏览器: iso8859-1 --> gbk (msie) fileName =

文件下载兼容各种浏览器

@RequestMapping(value = "/downloadfj") public void downloadfj(HttpServletRequest request, HttpServletResponse response) throws IOException { String resourceUrl = request.getParameter("fjUrl"); String filePath = request.getSession().get

兼容各浏览器的文件下载时中文名称乱码的解决方案

public class DownloadServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // codes.. String name = "中文名 带空格 的测试文件.txt"; String userAgent = request.get

PHP服务器文件管理器开发小结(九):jQuery动态表单实现文件下载

前文讨论的文件操作,无论是新建.编辑.移动.删除,都是服务端对本地文件系统的操作.这一节需要讨论一个涉及服务端和客户端协调进行的操作:文件下载. 简单的文件下载可以通过将相对路径写入超链接的方式进行,然而这样仅限于服务端Apache有下载权限的文档,如果需要支持对更多文件进行下载,仅仅使用这一方式就远远不够了.这里需要利用PHP的能力,在服务端"取出"文件并"推送"给客户端. 首先是生成下载图标链接: if (is_readable($filePath)) $inf

原生js实现文件下载的几种情况

内容来源: https://www.cnblogs.com/ajaxkong/p/11686041.html 1:一般通过a标签的方式下载,利用H5的Download属性 代码示例如下: 场景:适用于现代浏览器,url是下载地址,而不是文件流,常用于GET请求 1 function downLoad(downUrl, fileName) { 2 let a = document.createElement("a");// 创建a标签 3 if ('download' in a) { 4