java.io.BufferedInputStream bis = null; java.io.BufferedOutputStream bos = null; String filename = request.getParameter("filename"); try { String filename2 = new String(filename.getBytes("iso8859-1"), "utf-8"); bis = new java.io.BufferedInputStream( new java.io.FileInputStream(config.getServletContext().getRealPath("UploadFiles/" + filename2))); response.setContentType("application/x-msdownload"); response.setHeader("Content-disposition", "attachment; filename="+ new String(filename2.getBytes("gb2312"),"iso8859-1")); bos = new java.io.BufferedOutputStream(response.getOutputStream()); byte[] buff = new byte[2048]; int bytesRead; while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) { bos.write(buff, 0, bytesRead); } out.clear(); out = pageContext.pushBody(); } catch (Exception e) { //response.setContentType("text/html; charset=utf-8"); out.println("<meta http-equiv=/"Content-Type/" content=/"text/html; charset=utf-8/" />对不起,找不到该文件:"+filename); //e.printStackTrace(); } finally { if (bis != null){ bis.close(); bis = null; } if (bos != null){ bos.close(); bos = null; } }