zoukankan      html  css  js  c++  java
  • java 解决火狐、谷歌、IE下载文件名乱码问题

    一.工具类

    package com.ahtcm.util;
    
    import javax.servlet.http.HttpServletRequest;
    import java.io.UnsupportedEncodingException;
    
    public class BrowserEncodeSwitchUtil {
    
        public static String getContentDisposition(String fileName, HttpServletRequest request) throws UnsupportedEncodingException {
            String content_disposition = "";
            String userAgent = request.getHeader("User-Agent");
            if (userAgent.contains("Safari")) {
                byte[] bytes = fileName.getBytes("UTF-8");
                fileName = new String(bytes, "ISO-8859-1");
                content_disposition = String.format("attachment; filename="%s"", fileName);
            } else {
                fileName = java.net.URLEncoder.encode(fileName, "UTF-8");
                content_disposition = "attachment;filename=" + fileName;
            }
            return content_disposition;
        }
    }

    二.调用该方法

    @Override
        public void downloadExcelTpl(HttpServletRequest request, HttpServletResponse response) {
            FileInputStream is = null;
            try{
                String fileName = "居民病历导入模板.xls";
                String contentDisposition = BrowserEncodeSwitchUtil.getContentDisposition(fileName, request);
                response.setHeader("Content-Disposition", contentDisposition);
                /*获取文件的路径*/
                String realPath = request.getSession().getServletContext().getRealPath("/static/居民病历导入模板.xls");
                /*读取文件*/
                is=new FileInputStream(realPath);
                IOUtils.copy(is,response.getOutputStream());
            }catch (Exception e){
                e.printStackTrace();
            }finally {
                if(is !=null){
                    try {
                        is.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
  • 相关阅读:
    如何进入闷声发大财的传统企业做数据分析工作,帮助企业做数字转型?
    做一个最好的自己,不盲目学数据分析
    sql server如何判断数据库是否存在
    c++引用深入探讨
    VirtualBox 安装ghost版windows XP
    QT透明显示文字
    CSAPP
    随机颜色的生成
    远程桌面如何传递声音的原理
    递归求解全排列
  • 原文地址:https://www.cnblogs.com/wwjj4811/p/12585458.html
Copyright © 2011-2022 走看看