Servlet:浏览器下载文件时文件名为乱码问题
Posted ayeex
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Servlet:浏览器下载文件时文件名为乱码问题相关的知识,希望对你有一定的参考价值。
1 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 2 String filename = request.getParameter("filename"); 3 System.out.println(filename); 4 String path = getServletContext().getRealPath("download/"+filename); 5 // 将下载的文件设置成utf8编码(必须先找到文件真实路径path,再进行UTF8编码,否则服务器端找不到utf8编码后的文件名) 6 filename = URLEncoder.encode(filename,"UTF-8"); 7 // 设置响应头,控制浏览器下载该文件 8 response.setHeader("Content-disposition", "attachment;filename="+filename); 9 10 InputStream is = new FileInputStream(path); 11 OutputStream os = response.getOutputStream(); 12 int len = 0; 13 byte[] buffer = new byte[1024]; 14 while((len = is.read(buffer)) != -1) { 15 os.write(buffer,0,len); 16 } 17 os.close(); 18 is.close(); 19 }
以上是关于Servlet:浏览器下载文件时文件名为乱码问题的主要内容,如果未能解决你的问题,请参考以下文章
servlet从服务器磁盘文件读出到浏览器显示,中文乱码问题,不要忘记在输入流和输出流都要设置编码格式,否则一个地方没设置不统一就会各种乱码