TA的每日心情 | 开心 2021-12-13 21:45 |
---|
签到天数: 15 天 [LV.4]偶尔看看III
|
- /**
- * 区分ie 和其他浏览器的下载文件乱码问题
- * @param request
- * @param fileName
- * @return
- */
- public String getFileName(HttpServletRequest req,String fileName){
- String userAgent = req.getHeader("user-agent");
- userAgent = userAgent ==null?"":userAgent.toLowerCase();
- String name = fileName;
- try {
- //针对IE或者以IE为内核的[url=https://www.2cto.com/os/liulanqi/]浏览器[/url]:
- if(userAgent.contains("msie") ||userAgent.contains("trident")){
- name = URLEncoder.encode(name, "UTF-8");
- }else{
- name = new String(name.getBytes(), "iso-8859-1");
- }
- } catch (Exception e) {
- throw new SysException(ERRORConstants.COMMON_SYSTEM_ERROR, e);
- }
- return name;
- }
复制代码
网上很多例子是用 msie 和like Gecko 来做区分,说ie11去除了msie;
亲自测试 谷歌浏览器也带like Gecko,ie11的 msie没有移除,并且带有trident标记
结论是 不用用like Gecko来做区分,最后
- public void exportExcel(HttpServletRequest req,HttpServletResponse response) {
- try{
- response.setContentType("application/octet-stream");
- String excelName = "文件名";
- response.addHeader("Content-Disposition", "attachment;filename="+getFileName(req,excelName)+".xls");
- OutputStream out = response.getOutputStream();
- testService.export(out);
- }catch(Exception e){
- //
- }
- }
复制代码
|
|