分享

struts 1.2 文件上传与下载

 奥格柔克 2010-03-09
  1. /*  
  2. * Generated by MyEclipse Struts  
  3. * Template path: templates/java/JavaClass.vtl  
  4. */  
  5. package com.action;   
  6.   
  7. import com.form.FileForm;   
  8. import javax.servlet.http.*;   
  9. import org.apache.struts.action.*;   
  10. import org.apache.struts.actions.DispatchAction;   
  11. import java.util.Date;   
  12. import java.util.Calendar;   
  13. import java.util.Vector;   
  14. import org.apache.struts.upload.*;   
  15. import tools.ListPage;   
  16. import java.io.*;   
  17. import java.net.URLEncoder;   
  18.   
  19. /**   
  20. * MyEclipse Struts  
  21. * Creation date: 03-29-2008  
  22.  
  23. * XDoclet definition:  
  24. * @struts.action path="/fileAction" name="fileForm" parameter="method" scope="request"  
  25. */  
  26. public class FileAction extends DispatchAction {   
  27. /*  
  28. * Generated Methods  
  29. */  
  30.   
  31. /**   
  32. * Method execute  
  33. * @param mapping  
  34. * @param form  
  35. * @param request  
  36. * @param response  
  37. * @return ActionForward  
  38. */  
  39.   
  40. //文件上传   
  41. public ActionForward upload(ActionMapping mapping, ActionForm form,   
  42.     HttpServletRequest request, HttpServletResponse response) {   
  43.    final String fileExt="gif,GIF,jpg,JPG,jpeg,JPEG";   
  44.    final int maxSize=409600;   
  45.    FileForm fileForm = (FileForm) form;// TODO Auto-generated method stub   
  46.    ActionMessages messages=new ActionMessages();   
  47.    boolean flag=true;   
  48.    if(fileForm.getName().equals(""))   
  49.    {   
  50.     flag=false;   
  51.     messages.add("nameerror",new ActionMessage("name.error"));   
  52.    }   
  53.    if(fileForm.getUser().equals(""))   
  54.    {   
  55.     flag=false;   
  56.     messages.add("usererror",new ActionMessage("user.error"));   
  57.    }   
  58.    if(fileForm.getFile().getFileSize()==0)   
  59.    {   
  60.     flag=false;   
  61.     messages.add("fileerror",new ActionMessage("file.error"));   
  62.    }   
  63.    else  
  64.    {   
  65.     FormFile f=fileForm.getFile();   
  66.     int fileSize=f.getFileSize();   
  67.     int i=f.getFileName().indexOf(".");   
  68.     String ext=f.getFileName().substring(i+1);   
  69.     if(fileExt.indexOf(ext)==-1)   
  70.     {   
  71.      flag=false;   
  72.      messages.add("fileexterror",new ActionMessage("file.ext.error"));   
  73.     }   
  74.     if(fileSize>maxSize)   
  75.     {   
  76.      flag=false;   
  77.      messages.add("filesizeerror",new ActionMessage("file.size.error"));   
  78.     }   
  79.    }   
  80.    HttpSession session=request.getSession();   
  81.    if(request.getParameter("validate").equals(""))   
  82.    {   
  83.     flag=false;   
  84.     messages.add("validatenull",new ActionMessage("validate.null.error"));   
  85.    }   
  86.    else if(!request.getParameter("validate").equals((String)session.getAttribute("valicode")))   
  87.    {   
  88.     flag=false;   
  89.     messages.add("validateerror",new ActionMessage("validate.error"));   
  90.    }   
  91.    if(!flag)   
  92.    {   
  93.     saveErrors(request,messages);   
  94.     return mapping.findForward("error");   
  95.    }   
  96.    FormFile file=fileForm.getFile();   
  97.    String dir=servlet.getServletContext().getRealPath("/");   
  98.    int size=file.getFileSize();   
  99.    //System.out.println(size);   
  100.    String fileName=uploadFile(dir,file);   
  101.    String path="/"+fileName;   
  102.         fileForm.setPath(path);   
  103.         fileForm.setSize(file.getFileSize());   
  104.         fileForm.setTime(new Date().toLocaleString());   
  105.         ListPage listPage=new ListPage();   
  106.         listPage.insert(fileForm);   
  107.         /*  
  108.          * 若insert方法返回值为flase说明插入数据库失败;  
  109.          * 调用deleteImage(path)方法删除上传好的图片;  
  110.          * messages.add("filefailed",new ActionMessage("file.failed"));  
  111.          * return mapping.findForward("error");  
  112.          */  
  113.    messages.add("filesuccess",new ActionMessage("file.success"));   
  114.    saveMessages(request,messages);   
  115.    return mapping.findForward("success");   
  116. }   
  117.   
  118. //文件下载   
  119. public ActionForward download(ActionMapping mapping, ActionForm form,   
  120.     HttpServletRequest request, HttpServletResponse response)   
  121. {   
  122.    String path=request.getParameter("path");   
  123.    BufferedInputStream bis=null;   
  124.    BufferedOutputStream bos=null;   
  125.    OutputStream os=null;   
  126.    InputStream is=null;   
  127.    String filePath=servlet.getServletContext().getRealPath("/"+path);   
  128.         try  
  129.         {   
  130.          
  131.        File downloadFile=new File(filePath);   
  132.        is=new FileInputStream(downloadFile);   
  133.        bis=new BufferedInputStream(is);   
  134.        os=response.getOutputStream();   
  135.        bos=new BufferedOutputStream(os);   
  136.        response.setHeader("Content-disposition""attachment;filename="+URLEncoder.encode(path,"utf-8"));   
  137.        int bytesRead=0;   
  138.        byte[] buffer=new byte[8192];   
  139.        while((bytesRead=bis.read(buffer,0,8192))!=-1)   
  140.        {   
  141.         bos.write(buffer, 0, bytesRead);   
  142.        }   
  143.        bos.flush();                          
  144.        is.close();   
  145.        bis.close();   
  146.        os.close();   
  147.        bos.close();   
  148.         }   
  149.         catch(Exception e){   
  150.         e.printStackTrace();   
  151.         }   
  152.    return null;   
  153. }   
  154.   
  155. public String uploadFile(String dir,FormFile file)   
  156. {   
  157.    String fname=file.getFileName();   
  158.    int i=fname.indexOf(".");   
  159.    String type=fname.substring(i+1);   
  160.         Calendar calendar = Calendar.getInstance();   
  161.         String fileName="files/"+calendar.get(Calendar.YEAR) + (calendar.get(Calendar.MONTH)+1) + calendar.get(Calendar.DAY_OF_MONTH) +calendar.get(Calendar.HOUR_OF_DAY)+calendar.get(Calendar.MINUTE)+calendar.get(Calendar.SECOND)+calendar.get(Calendar.MILLISECOND)+Math.round(Math.random()*100*1000)+"."+type;   
  162.         //System.out.println(fileName);   
  163.         try  
  164.         {   
  165.             InputStream in=file.getInputStream();   
  166.             String path=dir+fileName;   
  167.             OutputStream out=new FileOutputStream(path);   
  168.             int bytesRead=0;   
  169.             byte[] buffer=new byte[8192];   
  170.             while((bytesRead=in.read(buffer, 08192))!=-1)   
  171.             {   
  172.             out.write(buffer, 0, bytesRead);   
  173.             }   
  174.             out.close();   
  175.             in.close();   
  176.         }   
  177.         catch(Exception e)   
  178.         {   
  179.         e.printStackTrace();   
  180.         }   
  181.         file.destroy();   
  182.         return fileName;   
  183. }   
  184.   
  185. }   

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约