java解决下载时文件名乱码问题

直接上部分代码:

                String zipFileName = fileNameRoot + System.currentTimeMillis() + ".zip";// 文件名+时间戳+ .zip
                //得请求头中的User-Agent
                String agent = httpServletRequest.getHeader("User-Agent");
                // 根据不同的客户端进行不同的编码
                String filenameEncoder = "";
                if (agent.contains("MSIE")) {
                    // IE浏览器
                    filenameEncoder = URLEncoder.encode(zipFileName, "utf-8");
                    filenameEncoder = filenameEncoder.replace("+", " ");
                } else if (agent.contains("Firefox")) {
                    // 火狐浏览器
                    BASE64Encoder base64Encoder = new BASE64Encoder();
                    filenameEncoder = "=?utf-8?B?" + base64Encoder.encode(zipFileName.getBytes("utf-8")) + "?=";
                } else {
                    // 其它浏览器
                    filenameEncoder = URLEncoder.encode(zipFileName, "utf-8");
                }

                httpServletResponse.setContentType("application/zip");
                // 告诉客户端该文件不是直接解析,而是以附件形式打开(下载)
                httpServletResponse.setHeader("Content-Disposition", "attachment;filename=" + filenameEncoder);

猜你喜欢

转载自blog.csdn.net/weixin_38399962/article/details/82906406