String filename = request.getParameter("path");
String path = getServletContext().getRealPath(filename);
//User-Agent Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/77.0
//浏览器的种类
String web = request.getHeader("User-Agent");
System.out.println(web);
if(web.contains("MSIE")){
filename = URLEncoder.encode(filename);
}else if(web.contains("Firefox")){
filename = base64EncodeFileName(filename);
}else if(web.contains("Chrome")){
filename = new String(filename.getBytes("utf-8"),"ISO-8859-1");
}
System.out.println(filename);
System.out.println(path);
String mimeType = getServletContext().getMimeType(filename);
System.out.println(mimeType);
response.setContentType(mimeType);
//response.setHeader("Content-Disposition", "attachment;filename="+filename);
response.setHeader("Content-Disposition", "attachment;filename="+filename);
FileInputStream fis = new FileInputStream(path);
OutputStream fos=response.getOutputStream();
byte[] b=new byte[1024*8];
int len=0;
while((len=fis.read(b))!=-1){
fos.write(b, 0, len);
}
fis.close();