`

文件下载

    博客分类:
  • JAVA
 
阅读更多

支持多种不同文件格式下载:

 

 

logger.info("*****下载文件开始*****");

     /*拼接下载文件*/
            String fileName = request.getParameter("filename");
            this.createLog(request, "用户下载文件" + fileName, null);//记录日志
           
            String path = request.getSession().getServletContext().getRealPath("/") + "msi" + "\\" + fileName;
           
            File file = new File(path);
           
   response.reset(); /*清除缓存的中的内容*/
   response.setContentType("application/x-download");/*设置请求响应的类型*/
            try {
       /*设置解析编码*/
       response.setCharacterEncoding("gb2312");
       request.setCharacterEncoding("gb2312");
               
                /*解决中文文件名乱码问题*/
    response.addHeader("Content-Disposition","attachment;fileName="+ URLEncoder.encode(fileName, "UTF-8"));
   } catch (UnsupportedEncodingException e) {
    logger.error("设置请求响应编码异常!");
    e.printStackTrace();
   }
            response.addHeader("Content-Length", new Long(file.length()).toString());
           
         /*文件下载的输入和输出流*/
   InputStream is = null;
            OutputStream os = null; 
            try{  
             if(file.exists()){
              /*初始化一个输出流*/
              os = response.getOutputStream();
                 is = new FileInputStream(file);
          
              /*文件是否读取结束标志*/
              int i = -1;
  
              byte[]  b = new byte[1024];/*定义输入输出之间的缓存*/
             
              /*第一次读取服务器上的文件*/
              i = is.read(b);
              while(i != -1){
                  os.write(b,0, i);
               i = is.read(b);
              }
             }else{//若文件不存在
              String info = "所下载的文件,系统没找到!!";
              request.setAttribute("info", info);
                    return "platform/downError";
             }
         }catch (IOException  ex) {
          logger.error("读取文件" + fileName + "异常");
   }finally {
    try {
     if(null != is) {
      is.close();
     }
     if(null != os) {
      os.flush();
      os.close();
     } 
    } catch (IOException e) {
    }
   }
   
        logger.info("*****下载文件结束*****");
     return null;
  

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics