需要工具类:commons-io-2.6-bin和commons-fileupload-1.4-bin
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
//解决获得中文参数的乱码
name = new String(name.getBytes("ISO8859-1"),"UTF-8");//美女.jpg
//获得请求头中的User-Agent
String agent = request.getHeader("User-Agent");
//根据不同浏览器进行不同的编码
String fileNameEncoder = "";
if (agent.contains("MSIE")) {
// IE浏览器
fileNameEncoder = URLEncoder.encode(name, "utf-8");
fileNameEncoder = fileNameEncoder.replace("+", " ");
} else if (agent.contains("Firefox")) {
// 火狐浏览器
BASE64Encoder base64Encoder = new BASE64Encoder();
fileNameEncoder = "=?utf-8?B?" + base64Encoder.encode(name.getBytes("utf-8")) + "?=";
} else {
// 其它浏览器
fileNameEncoder = URLEncoder.encode(name, "utf-8");
}
response.setContentType("text/html;charset=utf-8");
ServletContext servletContext = this.getServletContext();
InputStream fileInputStream = servletContext.getResourceAsStream("/file/"+name);
String minmeType = servletContext.getMimeType(name);
response.setHeader("content-type",minmeType);
response.setHeader("content-disposition","attachment;filename="+name);
OutputStream sos = response.getOutputStream();
byte[] buff = new byte[1024];
int len = 0;
while((len = fileInputStream.read(buff,0,buff.length)) != -1){
sos.write(buff, 0, len);
}
fileInputStream.close();
sos.close();
}