Google Code Prettify

2009年5月18日 星期一

Spring MultiActionController 也能應用在檔案下載功能

public ModelAndView download(HttpServletRequest req, HttpServletResponse res) throws Exception {
     String sno = req.getParameter("abc");

     try{
          List list = dao.Select("select * from abc_file where abc="+abc);
          if(list.size() != 0){
               Map map = (Map) list.get(0);
               String file_name = map.get("file_name")==null?"":(String)map.get("file_name");
               Long file_size = map.get("file_size")==null?Long.valueOf(0):(Long)map.get("file_size");
               byte[] file_contents = (byte[]) map.get("file_contents");
               String content_type = map.get("content_type")==null?"":(String)map.get("content_type");

               String agent = req.getHeader("User-Agent");

               res.reset();

               if(agent.indexOf("MSIE") != -1){
                    file_name = URLEncoder.encode(file_name,"UTF8");
               }else{
                    file_name = new String(file_name.getBytes("UTF-8"),"ISO8859-1");
               }

               res.setHeader("Content-disposition","attachment; filename="+file_name);
               res.setContentLength(file_size.intValue());
               res.setContentType(content_type);

               BufferedOutputStream ou = new BufferedOutputStream(res.getOutputStream());
               ou.write(file_contents);
               ou.flush();
               ou.close();
          }

     } catch ( Exception e ) {
          logger.error(e);
          throw e;
     }

     return null;
}

沒有留言: