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();
                    }
                }
            }
        }
  • 相关阅读:
    python 元组操作
    python安装(python2.7)
    0、
    1、Centos 7 系统的初化始配置
    C# 6.0新特性
    ios学习之路
    Can 't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock '(2) ;
    px,em,rem,vw单位在网页和移动端的应用
    html5shiv.js和respond.min.js
    display:inline-block间隙问题
  • 原文地址:https://www.cnblogs.com/wwjj4811/p/12585458.html
Copyright © 2011-2022 走看看