文件上传—SSM框架文件上传

1、准备上传下载的api组件

<dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.4</version>
</dependency> 
<dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.3.1</version>
</dependency>

 

2、编写前台上传表单

<form action="index/newadd" method="post" enctype="multipart/form-data">
<table class="form">
      <tr>
           <td class="field">证件照:</td>
           <td><input type="file" id="wkpicpath" class="text" name="attachs" />  </td>
           <td class="field"id="hderrorinfo" style="margin-left:0px">${sessionScope.uploadwkError}</td>
     </tr>
     <tr>
          <td class="field">头像:</td>
          <td><input type="file" id="hdpicpath"  class="text" name="attachs" /></td>
          <td class="field"id="hderrorinfo" style="margin-left:0px">${sessionScope.uploadhdError}</td>
     </tr>
     <tr>
          <td></td>
          <td><label class="ui-blue"><input type="submit" name="submit" value="添加" /></label></td>
     </tr>
</table>
</form>

 

3、编写controller层(多文件上传)

 /*
     * 管理员新增用户
     */
    @RequestMapping(value="/newadd",method=RequestMethod.POST)
    public String doAddUser(HttpSession session,HttpServletRequest request,
                            @RequestParam(value="attachs",required=false)MultipartFile[] attachs,
                            User user){
        
        //定义两个上传文件的路径
        String wkpicpath = null;
        String hdpicpath = null;
        String errorinfo = null;
        //定义上传过程管理标记
        boolean flag = true;
        //定义文件保存的位置
        String path = request.getSession().getServletContext().getRealPath("statics"+File.separator+"uploadfiles");
        //循环读取文件信息
        for(int i=0;i<attachs.length;i++){
            MultipartFile attach = attachs[i];
            //判断文件是否为空
            if(!attach.isEmpty()){
                //判断是第几个文件
                if(i==0){
                    errorinfo = "uploadwkError";
                }else if(i==1){
                    errorinfo = "uploadhdError";
                }
            //获取源文件名
            String oldName= attach.getOriginalFilename();
            //获取源文件名后缀
            String prefixName = FilenameUtils.getExtension(oldName);
            
            int fileSize = 500000;
            //判断上传大小不得超过500K
            if(attach.getSize()>fileSize){
                session.setAttribute(errorinfo, "上传文件不得大于500k");
                flag = false;
            }else if(prefixName.equalsIgnoreCase("jpg")
                    || prefixName.equalsIgnoreCase("png")
                    || prefixName.equalsIgnoreCase("jpeg")
                    || prefixName.equalsIgnoreCase("pneg")){
                //判断上传格式
                //定义新的文件名,当前系统时间+随机数+固定后缀,
                //RandomUtils需要引入jar文件commons-lang.jar
//String fileName = System.currentTimeMillis()+RandomUtils.nextInt(1000000)+"personer.jpg";
                String fileName = System.currentTimeMillis()+"personer.jpg";
                //创建新的文件,用于接收用户上传的文件流
                File targetFile = new File(path, fileName);
                if(!targetFile.exists()){
                    targetFile.mkdirs();
                }
                
                //将上传的文件保存
                try {
                    attach.transferTo(targetFile);
                } catch (Exception e) {
                    e.printStackTrace();
                    session.setAttribute(errorinfo,"上传失败!");
                    flag = false;
                } 
                
                //更新上传的路径
                if(i==0){
                    wkpicpath = path + File.separator + fileName;
                }else if(i==1){
                    hdpicpath = path + File.separator + fileName;
                }                
            }else{
                session.setAttribute(errorinfo,"图片格式不正确!");
                flag = false;
            }                
           }        
        }        
        
        //准备User
        if(flag){
            user.setWkpicpath(wkpicpath);
            user.setHdpicpath(hdpicpath);
            user.setUserrole(1);
                        //插入数据库
            if(userService.findAddUser(user)>0){                
                return "redirect:/index/user";
            }            
        }        
        return "manager/user-add.jsp";
    }

 

posted @ 2017-12-18 21:41  老人与JAVA  阅读(4247)  评论(0编辑  收藏  举报