springmvc-servlet.xml中需要定义 <bean>:
<!--配置MultipartResolver,用于文件上传--> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="5000000"/> <property name="defaultEncoding" value="UTF-8"/> </bean>
id必须是 :multipartResolver 不允许更改!!!!!
表示层中的form表单中 必须添加属性
enctype="multipart/form-data"
表单中定义上传的div
<div> <input type="hidden" id="errorinfo" value="${uploadFileError }"/> <label for="a_idPicPath">证件照:</label> <input type="file" name="aIdPicPath" id="a_idPicPath" value=""> <font color="red"></font> </div>
Controller中的主要代码:
定一个addsave方法,添加用户的数据的同时,可以选择性上传用户头像。
@RequestMapping(value = "/addsave.html", method = RequestMethod.POST) public String addUserSave(User user, HttpSession session, HttpServletRequest request, @RequestParam(value = "aIdPicPath",required = false)CommonsMultipartFile attach) { //定义文件上传路径 String idPicPath = null; //判断文件是否为空 if (!attach.isEmpty()) { //定义上传目标路径 String path = request.getSession().getServletContext().getRealPath("statics" + File.separator + "uploadfles"); //获取用户上传的文件名,用于回显,提高用户体验感 String oldFileName = attach.getOriginalFilename(); //获取文件名后缀,用于后续逻辑判断 String prefix = FilenameUtils.getExtension(oldFileName); //定义文件大小 int filesize = 500000; //比较文件大小 if (attach.getSize() > filesize) { request.setAttribute("uploadFileError", "*上传大小不得超过500k"); return "useradd"; } else if ( //比较文件是否指定类型 prefix.equalsIgnoreCase("jpg") || prefix.equalsIgnoreCase("jpeg") || prefix.equalsIgnoreCase("png") || prefix.equalsIgnoreCase("pneg")) { //当前系统时间+随机数+"_Personal.jpg" 重新定义文件是否重名 String fileName = System.currentTimeMillis() + RandomUtils.nextInt(10000000) + "_Personal.jpg"; //创建新文件 File targetFile = new File(path, fileName); if (!targetFile.exists()) { targetFile.mkdirs(); } try { //将内存中的文件写入磁盘中 attach.transferTo(targetFile); } catch (IOException e) { e.printStackTrace(); request.setAttribute("uploadFileError", "*上传失败"); return "useradd"; } //文件上传路径赋值 idPicPath = path + File.separator + fileName; } else { request.setAttribute("uploadFileError", "*上传图片格式不得超过500k"); return "useradd"; } //设置用户创建者ID(从会话中获取) user.setCreatedBy(((User) session.getAttribute(Constants.USER_SESSION)).getId()); //设置用户创建时间 user.setCreationDate(new Date()); user.setIdPicPath(idPicPath); if (userService.add(user)) { return "redirect:/user/userlist.html"; } } return "useradd"; }
Dao层之后的代码可以使用mybatis 或者 JDBC 这里就不贴代码了!