public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//设置响应的内容,告知浏览器用什么字符集
//response.setContentType(“text/html;charset=UTF-8”);
//response.setCharacterEncoding(“UTF-8”);
String path = this.getServletContext().getRealPath(“/WEB-INF/classes/头像.jpg”);
//获得文件名,并将文件名重新编码
String fileName=path.substring(path.lastIndexOf(“\”)+1);
//第一种转码方式,但是火狐出现文件名%E5%A4%B4%E5%83%8F.jpg,360可以,IE没有文件名,冷汗!
fileName=URLEncoder.encode(fileName, "UTF-8");
//第二种方式这个3个浏览器都能正常显示,不过这个方法的原理还是不懂,先转成utf8再转成iso,难道浏览器上是反着在转2次,感觉应该就一次...希望学了request后能了解
//fileName=new String(fileName.getBytes("UTF-8"),"ISO8859-1");
response.addHeader("Content-Disposition", "attachment;filename="+fileName);
ServletOutputStream sos = response.getOutputStream();
FileInputStream fis =new FileInputStream(path);
int len;
byte[] arr=new byte[1024];
while((len=fis.read(arr))!=-1){
sos.write(arr, 0, len);
}
sos.close();
fis.close();
第一次发表,当笔记用,萌新希望能和各位大神和小伙伴做朋友,有事留言哈