1、搭建好ssm框架
2、导入文件上传所需依赖
<!--文件上传--> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.6</version> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> </dependency> <!--文件上传依赖结束-->
3、springmvc的xml文件中配置文件所需的类
<!--文件上传配置-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="UTF-8"/> <property name="maxUploadSize" value="5000000"/> </bean>
4、jsp界面
对应
其次第二个文件上传对应的就是第二个div里面的内容
4、form表单配置
<form action="/jsp/user/addUser" method="post" enctype="multipart/form-data"></form>
注意:
表单中method必须为post方法不然会报405错误
必须加入enctype属性这样此表单才支持文件上传
5、controller层(逻辑和代码如下有注释):
@RequestMapping("addUser") public String addUser( User user, HttpSession session, Model model, @RequestParam(value="multipartFiles") MultipartFile[] multipartFiles){ //如果有文件上传 if(multipartFiles.length>0){ for(int i=0;i<multipartFiles.length;i++){ if(!multipartFiles[i].isEmpty()){ //File.separator 可以兼容不同系统下的路径分割 String path=session.getServletContext().getRealPath("statics"+ File.separator+"uploadfiles"); //原文件名 String oldName=multipartFiles[i].getOriginalFilename(); //获取原文件的后缀(可以过滤一些文件) String suffix= FilenameUtils.getExtension(oldName); //文件上上传大小 得小于 500 kb int fileSize=1024*500; //如果当前文件的大小大于500kb if((multipartFiles[i].getSize())>fileSize){ model.addAttribute("error","文件的大小大于500kb"); return "redirect:jsp/user/forwardTo?url=userAdd"; } //后缀判断 if("jpg".equals(suffix)||"jpeg".equals(suffix)||"png".equals(suffix)||"pneg".equals(suffix)){ //新拼接的文件名 原文件名+当前系统时间+随机数+"_Personal.jpg" String fileName=oldName+System.currentTimeMillis()+ RandomUtils.nextInt(1000000)+"_Personal.jpg"; File targetFile=new File(path,fileName); //如果该目录不存在 if(!targetFile.exists()){ //递归创建该目录 targetFile.mkdirs(); } try { //文件上传 multipartFiles[i].transferTo(targetFile); if(i==0){ user.setIdPicPath(fileName); }else if(i==1){ user.setWorkPicPath(fileName); } } catch (IOException e) { e.printStackTrace(); model.addAttribute("error","文件上传失败"); return "redirect:jsp/user/forwardTo?url=userAdd"; } }else{ model.addAttribute("error","图片格式不违法"); return "redirect:jsp/user/forwardTo?url=userAdd"; } } } } //未携带文件上传: //获取当前用户 User userSession = (User) session.getAttribute(Contents.USER_SESSION); //设置创建者 和 创建时间的值 user.setCreatedBy(userSession.getId()); user.setCreationDate(new Date()); //添加用户成功跳用户列表否则还是在用户添加页面 return userService.insertUser(user)?"redirect:/jsp/user/forwardTo?url=home":"redirect:/jsp/user/forwardTo?url=userAdd"; }