正确设置Firefox下载文件文件名的方法

不同的浏览器需要特殊设置,主要是火狐比较特殊,火狐可能给文件名加上“%0d%0a"这样的编码字符(换行的意思)。不得不佩服网上的高手,这也能解决。

 1 [HttpGet]
 2 public FileResult Download(string id)
 3 {
 4      var document = service.GetDocument(id);
 5      var fullName = Path.Combine(Root, document.FullName);
 6      string browser = HttpContext.Request.UserAgent.ToUpper();
 7      var fileName = document.Name;
 8      if (browser.Contains("FIREFOX"))
 9           fileName = "=?UTF-8?B?" + Convert.ToBase64String(Encoding.UTF8.GetBytes(fileName)) + "?=";
10      else
11           fileName = HttpUtility.UrlEncode(fileName, Encoding.UTF8);
12      return File(fullName, document.ContentType, fileName);
13 }

对于火狐的处理(标红的代码),我也是醉了,根本没看懂,但问题解决了!

【参考文献】http://www.cnblogs.com/godtrue/p/4333262.html

时间: 10-24

正确设置Firefox下载文件文件名的方法的相关文章

在ASP.NET中,IE与Firefox下载文件带汉字名时乱码的解决方法

解决办法: HttpContext.Current.Response.Clear(); HttpContext.Current.Response.Buffer = true; HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); HttpContext.Current.Response.Charset = "gb2312"; HttpCon

firefox下载文件的名称乱码问题

firefox下载文件乱码 一看题目,说的是什么鬼.且听我细细到来. 从firefox浏览器上下载了一个文件,文件名是乱码,如下: %E9%9D%9E%E5%85%A8%E8%AE%BA%E6%96%87%E8%AF%B4%E6%98%8E%E4%BC%9A.pptx 虽然我知道下载的这个文件名叫什么,但是光重命名,对不起这个程序员的称谓. 于是乎开始了看不懂字符串的编码到看得懂的字符串的转换. 为什么会乱码 因为不同的浏览器遵守不同的标准和协议 例如,发送一个文件时,需要在HTTP heade

下载文件(简洁方法)

public static void DownLoadFile(HttpRequest _Request, HttpResponse _Response, string fileName, string fullPath) { FileInfo fileInfo = new FileInfo(fullPath); if (fileInfo.Exists) { _Response.Clear(); _Response.ClearHeaders(); _Response.Buffer = false

jsp下载文件的实现方法及注意事项 (转)

jsp中实现文件下载,最简单的方式是在网页上做超级链接,如:<a href="music/abc.mp3">点击下载</a>. 但是,这样服务器上的目录资源会直接暴露给最终用户,会给网站带来一些不安全的因素. 因此,可以采用其它方式实现下载,常使用的有以下两种:       1.RequestDispatcher的方式进行:       2.采用文件流输出的方式下载(推荐). 1.采用RequestDispatcher的方式: 1 <% 2 respons

jsp下载文件的实现方法

(一) 最简单的方式是在网页上做超级链接,如:<a href="music/1.zip">点击下载</a>. 但是这样服务器上的目录资源会直接暴露给最终用户,会给网站带来一些不安全的因素. 因此可以采用其它方式实现下载,可以采用: 1.RequestDispatcher的方式进行: 2.采用文件流输出的方式下载. (推荐) 1.采用RequestDispatcher的方式进行  <% response.setContentType("applic

asp.net C#实现下载文件的六种方法实例

protected void Button1_Click(object sender, EventArgs e)  {  /*  微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite  下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题.  代码如下:  */ Response.ContentType = "application/x-zip-compressed";  Response

文件下载(解决下载文件文件名乱码)

不同浏览器下载文件时会出现文件名乱码问题,根据请求浏览器类型处理文件名.

正确设置Linux的ulimit值的方法

学习swoole的时候有一个max_conn参数, max_conn 描述:服务器允许维持的最大TCP连接数 说明:设置此参数后,当服务器已有的连接数达到该值时,新的连接会被拒绝.另外,该参数的值不能超过操作系统ulimit -n的值,同时此值也不宜设置过大,因为swoole_server会一次性申请一大块内存用于存放每一个connection的信息.这个值也会影响服务器的最大并发数,其实Linux是有文件句柄限制的,而且Linux默认不是很高,一般都是1024,生产服务器很容易就达到这个数量.

Win10系统IE浏览器能打开网页但无法下载文件的处理方法

在Win10系统中,很多没有安装下载软件的朋友默认就是使用IE来下载文件的,不过部分用户发现使用IE下载时出现点击无反应,无法下载的情况,那么如何解决此类问题呢?原因分析:出现此类情况大多是由于默认下载文件夹不存在引起的具体有如下几种方面.1.Win10系统安装好后修改了系统盘符修改系统盘符,IE浏览器默认的安装位置出现错误,导致IE无法运行,因此无法下载.建议:检查皇冠现金系统盘符是否和安装时的是一致的,若发生变化,把盘符重新改回和原来一致.2.默认下载文件夹不存在默认下载文件夹不存在,IE下