用servlet实现文件下载

来源:互联网 发布:ubuntu 17.04 iso下载 编辑:程序博客网 时间:2024/05/29 12:07
Java代码
  1. public class FileDownLoadSevrlet extends HttpServlet {   
  2.     private static final long serialVersionUID = 1L;   
  3.   
  4.     protected void doGet(HttpServletRequest request,   
  5.             HttpServletResponse response) {   
  6.         try {   
  7.             request.setCharacterEncoding("UTF-8");// 设置编码方式使得url中的汉字能处理  
  8.         } catch (UnsupportedEncodingException e1) {   
  9.             e1.printStackTrace();   
  10.         }   
  11.         String oldTemplateName = request.getParameter("palatename");   
  12.         String fileName = null;   
  13.         String dir = null;   
  14.         File file = null;   
  15.         ITemplateManager iTemplateManager = TemplateManagerImpl.getInstance(); // 模板下载接口  
  16.         String templatename = null;   
  17.         if (oldTemplateName != null) {   
  18.             try {   
  19.                 templatename = new String(oldTemplateName   
  20.                         .getBytes("ISO-8859-1"), "UTF-8");   
  21.             } catch (UnsupportedEncodingException e) {   
  22.                 e.printStackTrace();   
  23.             }   
  24.             String tempPath = iTemplateManager.getTemplatePath();   
  25.             // 使用接口先生成文件然后下载   
  26.             if (templatename.contains(File.separator)) {   
  27.                 fileName = templatename.substring(templatename   
  28.                         .lastIndexOf(File.separator) + 1);   
  29.                 if (templatename.contains("templates")) {   
  30.                     dir = templatename.substring(templatename   
  31.                             .indexOf("templates") + 10, templatename   
  32.                             .lastIndexOf(File.separator))   
  33.                             + "";   
  34.                 } else {   
  35.                     dir = templatename.substring(0, templatename   
  36.                             .lastIndexOf(File.separator))   
  37.                             + "";   
  38.                 }   
  39.             } else {   
  40.                 fileName = templatename;   
  41.                 dir = "";   
  42.             }   
  43.             try {   
  44.                 file = iTemplateManager.downloadTemplate(fileName, tempPath   
  45.                         + File.separator + dir);   
  46.             } catch (ReportException e) {   
  47.                 e.printStackTrace();   
  48.             }   
  49.   
  50.             // 下载做的准备   
  51.             response.setContentType("textml;charset=UTF-8");   
  52.             response.setContentType("application/x-msdownload;charset=UTF-8");   
  53.             response.setHeader("Content-Disposition""attachment; filename=\""  
  54.                     + fileName + "\"");   
  55.             FileReader fileReader = null;   
  56.             BufferedReader reader = null;   
  57.             BufferedWriter writer = null;   
  58.             try {   
  59.                 fileReader = new FileReader(file.toString());   
  60.                 reader = new BufferedReader(new FileReader(file.toString()));   
  61.                 writer = new BufferedWriter(response.getWriter());   
  62.                 String line = null;   
  63.                 while ((line = reader.readLine()) != null) {   
  64.                     writer.write(line);   
  65.                 }   
  66.             } catch (FileNotFoundException e) {   
  67.                 e.printStackTrace();   
  68.             } catch (IOException e) {   
  69.                 e.printStackTrace();   
  70.             } finally {   
  71.                 if (fileReader != null)   
  72.                     try {   
  73.                         fileReader.close();   
  74.                     } catch (IOException e) {   
  75.                         e.printStackTrace();   
  76.                     }   
  77.                 if (reader != null)   
  78.                     try {   
  79.                         reader.close();   
  80.                     } catch (IOException e) {   
  81.                         e.printStackTrace();   
  82.                     }   
  83.                 if (writer != null)   
  84.                     try {   
  85.                         writer.close();   
  86.                     } catch (IOException e) {   
  87.                         e.printStackTrace();   
  88.                     }   
  89.             }   
  90.         }   
  91.     }   
  92. }