public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { String saveUrl = request.getParameter("url"); //有配置存储路径 String savePath = ConfUtil.getValue("savePath"); if(savePath != null && !"".equals(savePath)) { saveUrl = savePath + "/" + saveUrl; }else{ //无存储路径时,读默认的存储位置,sc项目下 saveUrl = request.getSession().getServletContext() .getRealPath("") + saveUrl; } File f = new File(saveUrl); if (!f.exists()) { response.sendError(404, "File not found!"); return; } BufferedInputStream br = new BufferedInputStream(new FileInputStream(f)); byte[] buf = new byte[1024]; int len = 0; String fn = request.getParameter("fn"); if(fn == null || fn.isEmpty()){ fn = f.getName(); } System.out.println(f.getName()+"============"); response.reset(); // 非常重要 // 纯下载方式 response.setContentType("application/x-msdownload"); System.out.println(f.getName()); System.out.println(fn); String formatFileName = encodingFileName(fn); // response.setHeader("Content-Disposition", "attachment; filename=" + f.getName()); response.setHeader("Content-Disposition", "attachment; filename=" + formatFileName); OutputStream out = response.getOutputStream(); while ((len = br.read(buf)) > 0) out.write(buf, 0, len); br.close(); out.close(); } public static String encodingFileName(String fileName) { String returnFileName = ""; try { returnFileName = URLEncoder.encode(fileName, "UTF-8"); returnFileName = StringUtils.replace(returnFileName, "+", "%20"); if (returnFileName.length() > 150) { returnFileName = new String(fileName.getBytes("GB2312"), "ISO8859-1"); returnFileName = StringUtils.replace(returnFileName, " ", "%20"); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); if (log.isWarnEnabled()) { log.info("Don't support this encoding ..."); } } return returnFileName; }
java文件下载,并修改文件名,解决中文乱码
猜你喜欢
转载自lililucky1211.iteye.com/blog/2263224
今日推荐
周排行