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

        [CheckSession]
        public ActionResult ExpDataTwo()
        {
            try
            {         
                string Status_Missionn = Request.QueryString["sexch"];
                ParadoxWebService.ParadoxServiceClient client = new ParadoxWebService.ParadoxServiceClient();
                ExportResultInfo res = client.ExportParadoxDataBase(LoadExportSqlStrTwo(Status_Missionn), "GLJ");
                string XMlDirectory = System.Web.Hosting.HostingEnvironment.MapPath("~/App_Data/Download/");
                string fileName = Session["hangji"].ToString() + Session["atmTwo_Code"].ToString() + DateTime.Now.ToString("yyyyMMddmmss") + ".DB";   // 以分秒为文件名。

                # region 处理乱码
                Encoding encoding;
                string outputFileName = null;
                string browser = Request.UserAgent.ToUpper();
                if (browser.Contains("MS") == true && browser.Contains("IE") == true)
                {
                    outputFileName = HttpUtility.UrlEncode(fileName, Encoding.UTF8).Replace("+", "%20");
                    encoding = System.Text.Encoding.Default;
                }
                else if (browser.Contains("FIREFOX") == true)
                {
                    outputFileName = fileName;
                    encoding = System.Text.Encoding.GetEncoding("GB2312");
                }
                else
                {
                    outputFileName = HttpUtility.UrlEncode(fileName);
                    encoding = System.Text.Encoding.Default;
                }
                #endregion

                string url = XMlDirectory + fileName;
                ConvertToDB(res.ExportDbBuffer, url);
                return File(url, "application/vnd.borland", outputFileName);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }

 

/// <summary>
        /// 字节转化为文件。
        /// </summary>
        /// <param name="buffer"></param>
        private void ConvertToDB(byte[] buffer, string filePath)
        {
            FileStream fstream = System.IO.File.Create(filePath, buffer.Length);
            try
            {
                fstream.Write(buffer, 0, buffer.Length);
            }
            catch (Exception ex)
            {

            }
            finally
            {
                fstream.Close();
            }
        }

转载于:https://www.cnblogs.com/zh1989/p/4241124.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值