jsp实现文件下载与中文文件名乱码问题解决
来源:互联网 发布:网络平台售卖药品资质 编辑:程序博客网 时间:2024/04/27 22:41
download.jsp下载页面
<%response.setContentType("APPLICATION/OCTET-STREAM"); %><jsp:directive.page import="java.io.File"/><% //注意:“%><” 这些代码之间一定不能留空隙,否则下载文件乱码。 String sFileName = request.getParameter("FileName"); String sDownName = request.getParameter("DownName"); //得到服务器绝对路径 String pathString = (String)request.getSession().getServletContext().getRealPath(File.separator+"protect");
String sFilePath = ""; sFilePath = pathString+File.separator; sDownName =new String(sDownName.getBytes("iso8859-1"),"gb2312");//关键是这句,否则会出现下载文件名称乱码 response.setContentType("application/x-msdownload"); response.setHeader("Content-disposition","attachment; filename="+new String(sDownName.getBytes("gb2312"),"iso8859-1"));// 打开指定文件的流信息 java.io.FileInputStream fileInputStream = null; try{ fileInputStream = new java.io.FileInputStream(sFilePath+sFileName); // 写出流信息 byte buffer[] = new byte[65000]; int i; while( (i=fileInputStream.read(buffer, 0, 65000))!=-1 ) { response.getOutputStream().write(buffer, 0, i); } out.flush(); out.close(); }catch(Exception ex){ ex.printStackTrace(); }finally{ if(fileInputStream!=null){fileInputStream.close(); } }%>