如何使用springmvc实现单文件上传和多文件上传?

springmvc文件

    <!-- 配置MultipartResolver,用于上传文件,使用Apache的CommonsMultipartResolver -->  
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
   		 <property name="maxUploadSize" value="8000000"/>
   		 <property name="defaultEncoding" value="UTF-8"/>
    </bean>

jsp层

            <form id="userForm" name="userForm" method="post" action="${pageContext.request.contextPath }/user/useraddsave.html" enctype="multipart/form-data">

             <div>
                  <input type="hidden" id="errorinfo" value="${uploadFileError}"/>
                  <label for="a_idPicPath">证件照</label>
                  <input type="file" name="a_idPicPath" id="a_idPicPath"/>
                  <font color="red"></font>
              </div>

control层

 @RequestMapping(value="/useraddsave.html",method=RequestMethod.POST)
     public String addUserSave(User user,HttpSession session,HttpServletRequest request,
     @RequestParam(value ="a_idPicPath", required = false) MultipartFile attach){
		 System.out.println("youjinru");
     String idPicPath = null;
     //判断文件是否为空
     if(!attach.isEmpty()){
     //定义上传的目标的路径    因为也许不是windows系统,不识别/  ,所以我们使用自适应的路径分隔符
     String path = request.getSession().getServletContext().getRealPath("statics"+File.separator+"uploadfiles");
    
     String oldFileName = attach.getOriginalFilename();//获取//原文件名
    
     String suffix=FilenameUtils.getExtension(oldFileName);//原文件后缀
     
     int filesize = 500000;   //定义上传文件的大小
 
     if(attach.getSize() >  filesize){//上传大小不得超过 500k
     request.setAttribute("uploadFileError", " * 上传大小不得超过 500k");
     return "useradd";
     //对文件的格式进行判断
     }else if(suffix.equalsIgnoreCase("jpg") || suffix.equalsIgnoreCase("png")
     || suffix.equalsIgnoreCase("jpeg") || suffix.equalsIgnoreCase("pneg")){//上传图片格式不正确
        //满足提条件后,定义一个新的文件名:规则:
       // 当前系统的时间+随机数+"_Personal.jpg"
             String fileName = System.currentTimeMillis()+RandomUtils.nextInt(1000000)+"_Personal.jpg";
             logger.debug("new fileName======== " + attach.getName());
            //建立一个文件对象:
             File targetFile = new File(path, fileName);
             if(!targetFile.exists()){
             targetFile.mkdirs();
             }
             //保存
             try {
             //接受用户上传的文件流;
             attach.transferTo(targetFile);
             } catch (Exception e) {
             e.printStackTrace();
             request.setAttribute("uploadFileError", " * 上传失败!");
             return "useradd";
             }
            //上传到服务器的路径:
             idPicPath = path+File.separator+fileName;
     }else{
     request.setAttribute("uploadFileError", " * 上传图片格式不正确");
     return "useradd";
     }
     }
     user.setCreatedBy(((User)session.getAttribute(Constants.USER_SESSION)).getId());
     user.setCreationDate(new Date());
     user.setIdPicPath(idPicPath);
     if(userService.add(user)){
    	 System.out.println("tianzhuadao  userlist");
     return "redirect:/user/userlist.html";
     }
     return "useradd";
     }

pojo层 

若是 pojo层中的实体类缺少上传图片路径的字段,那么需要补充上去。数据库同理。

多文件上传




猜你喜欢

转载自blog.csdn.net/Java_stud/article/details/81045385