文件名浏览器兼容性(解决.net 文件名在IE和FireFox不兼容)
来源:互联网 发布:godaddy域名push教程 编辑:程序博客网 时间:2024/06/15 06:57
最近在做一个系统,系统中有一个功能就是用浏览器打印已经配置好的Word文档到本地,这个功能,其实挺简单的,也很好实现。当时我们是用FireFox做的测试,非常简单就实现了。打印效果如下:
在测试兼容性的时候,我们用IE测试出现了问题(其他浏览器基本上兼容),文档名称出现了乱码,如下图所示
出现问题之后,我查了一些资料,发现原来是IE浏览器与需要对中文名称进行编码,然后再显示,就可以了。我们的源代码如下:
public void jianxigongzi(FileWagesViewModel enFileWages) { if (Session["userID"]==null) { RedirectToAction("../Login/Login"); } //获取模板的路径 var path = Server.MapPath("../Document/1见习工资审批表.doc"); #region 给见习工资审批表的各个参数赋值 string strUserID = Session["userID"].ToString(); //string strUserID = "001";//写死的测试 while (strUserID.Length < 4) { strUserID = "0" + strUserID; } //获取信函编号 string strCardNo = numberInfo.GetNumber(); while (strCardNo.Length < 4) { strCardNo = "0" + strCardNo; } string basicInformationNumber = enFileWages.basicInformationNumber; //获取documentID参数 string number = "LFRC" + strUserID + "No." + strCardNo; //给word中的表赋值 string name = enFileWages.name;//姓名 string sex = enFileWages.sex;//性别 //调用B层获得出生日期 //FileWagesViewModel resShow = fileWagesInfo.QueryBasicInfo(basicInformationNumber); List<BasicInfoViewModel> ShowDetileInfores = resBasicres.ShowdetailBasicInfoLetter(basicInformationNumber).ToList(); BasicInfoViewModel resShow = ShowDetileInfores.FirstOrDefault(); string birthday = resShow.birthday == null ? "" : string.Format("{0:D}", Convert.ToDateTime(resShow.birthday));//出生年月 //调用学历中的方法,获得其他的三个字段 //获得学历表中的信息 StudentStatusInfoViewModel enStudentInfo = queryStudentStatus.QueryDetailStudent(basicInformationNumber); string enter = enStudentInfo.entranceDate == null ? "" : string.Format("{0:D}", Convert.ToDateTime(enStudentInfo.entranceDate));//入学时间 string graduate = enStudentInfo.graduationDate == null ? "" : string.Format("{0:D}", Convert.ToDateTime(enStudentInfo.graduationDate));//毕业时间 string back = enStudentInfo.educationBackground;//学历 string parttime = resShow.workingtime == null ? "" : string.Format("{0:D}", Convert.ToDateTime(resShow.workingtime)); //参加工作的时间 string fileName = "见习工资审批表.doc";//这是文件名,如果不进行编码,直接放在这里,IE就会乱码 string letterType = "见习工资审批表"; string userId = Session["userID"].ToString(); string letterNum = strCardNo; //获取模板中设定好的字段 String[] fieldNames = new String[] { "number", "name", "sex", "enter", "graduate", "back", "birthday", "parttime" }; //给模版中参数赋值 Object[] fieldValues = new Object[] { number, name, sex, enter, graduate, back, birthday, parttime }; Print(path, fileName, fieldNames, fieldValues); filterPrint.FilterPrint(basicInformationNumber, letterType, letterNum, userId); #endregion }查到问题之后,我们进行了修改,在打印之前,先判断浏览器,如果是IE , 就对filename进行UTF-8的编码,然后再输出,如果不是,就直接输出,这样问题就解决了。修改代码如下:
string fileName=<span style="font-family: Arial, Helvetica, sans-serif;">"户号6665.doc"</span><span style="font-family: Arial, Helvetica, sans-serif;">;</span> string UserAgent = Request.ServerVariables["http_user_agent"].ToLower(); if (UserAgent.IndexOf("firefox") == -1) //如果不是火狐浏览器 { fileName = HttpUtility.UrlEncode(<span style="font-family: Arial, Helvetica, sans-serif;">fileName</span><span style="font-family: Arial, Helvetica, sans-serif;">, Encoding.UTF8);</span> }如此一来,就达到了浏览器兼容。
1 0
- 文件名浏览器兼容性(解决.net 文件名在IE和FireFox不兼容)
- 解决struts2在(IE,Firefox)下载文件名乱码问题。
- 解决struts2在(IE,Firefox)下载文件名乱码问题
- 下载csv,excel文件名乱码的问题(IE和FireFox两种浏览器)
- 解决ie和其他浏览器poi下载excel文件名乱码
- 解决ie和其他浏览器poi下载excel文件名乱码
- IE和Firefox下载文件名乱码
- IE和firefox浏览器的event事件兼容性(转帖)
- 兼容在IE和Firefox浏览器下操作XML(英)
- 解决Google/Firefox等浏览器兼容IE
- Javascript兼容IE和Firefox浏览器技巧
- 屏蔽浏览器刷新 兼容firefox 和 ie
- js在IE和Firefox兼容性
- 解决PHP在IE浏览器下载文件,中文文件名乱码问题
- 解决Java下载文件,文件名包含中文在IE浏览器乱码问题
- Firefox 火狐 浏览器下载文件文件名中文乱码解决
- FireFox浏览器导出文件名乱码,原因剖析与解决
- 文件下载功能在FireFox和IE中的差异(当下载文件文件名中出现空格时,在FireFox中文件会被截断)
- WAV和PCM的关系和区别
- Codeforces 609C Load Balancing 【水题】
- 安卓QQ分享
- HTML+CSS
- 使用ViewFlipper实现公告播放
- 文件名浏览器兼容性(解决.net 文件名在IE和FireFox不兼容)
- 静态和动态设置EditText的属性大全
- 异常信息:RSA premaster secret error
- Linux解决Device eth0 does not seem to be present,delaying initialization错误
- 盘点2015年十大热门Android开源新项目
- 并发、并行、异步、同步、单进程、多进程、多线程...
- Hibernate 的三种状态
- java 1
- js本地图片预览,及服务端保存