package net.xqlee.project.controller;
import java.net.URLEncoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class FileController {
/**
* 文件下载
*
* @param request
* @param response
*/
@GetMapping("download.do")
public void downloadFile(HttpServletRequest request, HttpServletResponse response) {
try {
String fileName = "中文测试.DAT";
response.getWriter().write("中文测试你好");
fileName = dealFileName(request, fileName);
response.addHeader("Content-Disposition", "attachment;filename=" + fileName);
} catch (Exception e) {
e.printStackTrace();// logger
}
}
/**
* 处理IE/Edge(win10)浏览器中文乱码
*
* @param request
* @param fileName
* @return
*/
public String dealFileName(HttpServletRequest request, String fileName) {
try {
String codeFileName = "";
String agent = request.getHeader("User-Agent");
if (agent == null) {
return fileName;
}
agent = agent.toUpperCase();
if (null == agent) {
codeFileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");
} else if (-1 != agent.indexOf("MSIE") || -1 != agent.indexOf("TRIDENT") || -1 != agent.indexOf("EDGE")) {
codeFileName = URLEncoder.encode(fileName, "UTF-8");
} else {
codeFileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");
}
return codeFileName;
} catch (Exception e) {
e.printStackTrace();// logger
return fileName;
}
}
}
https://blog.xqlee.com/article/323.html