• 【.net】在ASP.NET中,IE与Firefox下载文件名中带中文汉字的文件,文件名乱码的问题


    #问题:客户端为ie或Firefox,服务端为asp.net时,下载文件名中包含中文汉字时,下载下来的文件的文件名是乱码;

    #解决方案:

      示例代码:下载名称中带汉字的文件;

     1 public void ProcessRequest(HttpContext context)
     2 {
     3             string action = context.Request["action"].ToString();
     4             if (action == "download")
     5             {
     6                 string fileName = "资源统计详细信息.txt";//客户端保存的文件名
     7                 string filePath = context.Server.MapPath("资源统计详细信息.txt");//服务端文件路径
     8 
     9                 //以字符流的形式下载文件
    10                 FileStream fs = new FileStream(filePath, FileMode.Open);
    11                 byte[] bytes = new byte[(int)fs.Length];
    12                 fs.Read(bytes, 0, bytes.Length);
    13                 fs.Close();
    14 
    15                 #region 处理中文文件名乱码问题(ie及firefox下)
    16                 Encoding encoding;
    17                 string outputFileName = null;
    18                 string browser = HttpContext.Current.Request.UserAgent.ToUpper();
    19                 if (browser.Contains("MS") == true && browser.Contains("IE") == true)
    20                 {
    21                     outputFileName = HttpUtility.UrlEncode(fileName);
    22                     encoding = System.Text.Encoding.Default;
    23                 }
    24                 else if (browser.Contains("FIREFOX") == true)
    25                 {
    26                     outputFileName = fileName;
    27                     encoding = System.Text.Encoding.GetEncoding("GB2312");
    28                 }
    29                 else
    30                 {
    31                     outputFileName = HttpUtility.UrlEncode(fileName);
    32                     encoding = System.Text.Encoding.Default;
    33                 } 
    34                 #endregion
    35 
    36                 HttpContext.Current.Response.Clear();
    37                 HttpContext.Current.Response.Buffer = true;
    38                 HttpContext.Current.Response.ContentEncoding = encoding;
    39                 HttpContext.Current.Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.txt", string.IsNullOrEmpty(outputFileName) ? DateTime.Now.ToString("yyyyMMddHHmmssfff") : outputFileName));
    40                 HttpContext.Current.Response.BinaryWrite(bytes);
    41                 HttpContext.Current.Response.End();
    42 
    43             }
    44 }

    ------------------------------

  • 相关阅读:
    WordPress后台添加侧边栏菜单
    Redis 使用多个数据库及密码配置
    datatable 修改点击列头进行排序顺序
    命令行客户端操作pg数据库常用操作
    pg 创建自增id
    让 PHP COOKIE 立即生效(不用刷新就可以使用)
    js cookie
    使用mysql监视器即命令行下的mysql
    javascript 获取键盘上的按键代码KeyCode
    吞吐量(TPS)、QPS、并发数、响应时间(RT)概念
  • 原文地址:https://www.cnblogs.com/willingtolove/p/9454424.html
Copyright © 2020-2023  润新知