`

Struts文件上传

 
阅读更多

这是struts的文件上传,里面做了比价多的封装。首先添加struts框架

 

===============html=============

<body>
  <html:form action="/user.do?method=add"  enctype="multipart/form-data" method="post">
    <table border="1" align="center" width="60%">
        <tr>
         <td align="right">相片:</td>
         <td><html:file property="user.u_img"/></td>
       </tr>
       <tr>
         <td colspan="2" align="center"><html:submit value="确定"/></td>
       </tr>
    </table>
  </html:form>
 </body>

 

==============实体bean=========


 // 文件上传的对象FormFile
 private FormFile u_img;
 
 //加一个得到路径的属性
 
 private String uppath;
 

注意:添加相应的set和get方法  。u_img 是FormFile类型

 

==============action==========

 

 

 /***************************************************************************
  * 增加
  */
 public ActionForward add(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response)
 {
  UserForm userForm = (UserForm) form;
  // 第一步:找到上传的地方在哪儿?
  String path = servlet.getServletContext().getRealPath("/upload");
  
  // 第二步:改名
  // 第一小步:得到老名
  
  FormFile file = userForm.getUser().getU_img();
  String oldName = file.getFileName();
  // 第二小步:小红.jpg--->.jpg---13213213213213.jpg
  int begin = oldName.lastIndexOf(".");// 开始位置
  int end = oldName.length();
  String lastname = oldName.substring(begin, end);
  // 第三小步:得到系统时间、随机数
  Date d = new Date();
  SimpleDateFormat format = new SimpleDateFormat("yyyyMMddhhmmss");
  String mytime = format.format(d);
  Random rad = new Random(999999);
  int radNum = rad.nextInt();
  // 第四小步:组新名
  String newName = mytime + radNum + lastname;
  // 第三步:上传
  try
  {
   InputStream in = file.getInputStream();//
   
   OutputStream out = new FileOutputStream(path + "/" + newName);//
   int byteRead = 0;
   byte buffer[] = new byte[819200];//
   while ((byteRead = in.read(buffer, 0, 819200)) != -1)
   {
    out.write(buffer, 0, byteRead);
   }
   out.close();
   in.close();

  }
  catch (Exception e)
  {
   e.printStackTrace();
  }
  // 第四步:记录入库
  // 第一小步:得到上传文件的路径
  String uppath = "./upload/" + newName;
  userForm.getUser().setUppath(uppath);
  // 第二步:入库
  this.userService.addUser(userForm.getUser());
  return this.all(mapping, form, request, response);
 }

/***************************************************************************
  * 修改
  */
 public ActionForward upp(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response)
 {
  UserForm userForm = (UserForm) form;
  
  String path = servlet.getServletContext().getRealPath("/upload");
  // 第一步:你修改图片吗?
  FormFile file = userForm.getUser().getU_img();
  String oldName = file.getFileName();
  System.out.println("==========="+oldName);
  if (oldName.length() > 0)
  {
   // 表明你要修改图片

   // 第一小步:我先要删除以前的那张图片
   UserEntity user = new UserEntity();
   user = this.userService.getOne(userForm.getUser().getU_id());
   // 得到老图片的路径
   String mypath = user.getUppath();
   // 去服务器上去删除mypath这张图片

   int mybegin = 9;
   int myend = mypath.length();
   String xpath = mypath.substring(mybegin, myend);

   String delpath = path + "/" + xpath;
   File f = new File(delpath);
   f.delete();

   // 上传新的图片

   // 第二小步:小红.jpg--->.jpg---13213213213213.jpg
   int begin = oldName.lastIndexOf(".");// 开始位置
   int end = oldName.length();
   String lastname = oldName.substring(begin, end);
   // 第三小步:得到系统时间、随机数
   Date d = new Date();
   SimpleDateFormat format = new SimpleDateFormat("yyyyMMddhhmmss");
   String mytime = format.format(d);
   Random rad = new Random(999999);
   int radNum = rad.nextInt();
   // 第四小步:组新名
   String newName = mytime + radNum + lastname;
   // 第三步:上传
   try
   {
    InputStream in = file.getInputStream();//
    OutputStream out = new FileOutputStream(path + "/" + newName);//
    int byteRead = 0;
    byte buffer[] = new byte[819200];//
    while ((byteRead = in.read(buffer, 0, 819200)) != -1)
    {
     out.write(buffer, 0, byteRead);
    }
    out.close();
    in.close();

   }
   catch (Exception e)
   {
    e.printStackTrace();
   }
   // 第四步:记录入库
   // 第一小步:得到上传文件的路径
   String uppath = "./upload/" + newName;
   userForm.getUser().setUppath(uppath);
   this.userService.updateUser(userForm.getUser());
  }
  else
  {
   // 不修改图片
   this.userService.updateUser(userForm.getUser());
  }

  return this.all(mapping, form, request, response);
 }

/***************************************************************************
  * 删除
  */
 public ActionForward del(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response)
 {
  UserForm userForm = (UserForm) form;
  String path = servlet.getServletContext().getRealPath("/upload");
  int u_id = Integer.parseInt(request.getParameter("u_id"));
  // 第一步:删除这条记录对应的图片
  UserEntity user = new UserEntity();
  user = this.userService.getOne(userForm.getUser().getU_id());
  // 得到老图片的路径
  String mypath = user.getUppath();
  //System.out.println(mypath);
  // 去服务器上去删除mypath这张图片

  int mybegin = 9;
  int myend = mypath.length();
  String xpath = mypath.substring(mybegin, myend);

  String delpath = path + "/" + xpath;
  File f = new File(delpath);
  f.delete();
  // 删除数据库中的记录
  this.userService.delUser(u_id);

  return this.all(mapping, form, request, response);
 }

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics