1 1.在SpringMVC中的配置文件dispatcherServlet-servlet.xml中加入
2
3 <!-- 配置MultipartResolver,用于上传文件,使用spring的CommonsMultipartResolver -->
4 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
5 <property name="maxUploadSize" value="5000000"/>
6 <property name="defaultEncoding" value="UTF-8"/>
7 </bean>
8
9
10 2.处理文件上传-单文件传-在controller类里添加
11 //文件上传
12 //添加用户时,为post请求,访问以下代码
13 @RequestMapping(value="/adduser",method=RequestMethod.POST)
14 public String add(@Validated User user,BindingResult bindingResult,MultipartFile attach,HttpServletRequest req){//紧跟validate之后写验证结果
15 if(bindingResult.hasErrors()){
16 System.out.println("@Validated User user-->"+user);
17 //若有错误,直接掉转到add 视图
18 return "user/add";
19 }
20 //判断文件是否为空
21 if(!attach.isEmpty()){
22 //指定文件上传位置
23 String realPath = req.getSession().getServletContext().getRealPath("/resources/upload");
24 System.out.println("realPath===="+realPath);
25 System.out.println("原始文件的名字"+attach.getOriginalFilename());
26 System.out.println(attach.getContentType());
27 System.out.println(attach.getName());//得到页面表单控件的值
28
29 //建立空文件
30 //File.separator="/",File.separator:路径自适应分隔符,适合其它操作系统,
31 File file = new File(realPath+File.separator+attach.getOriginalFilename());
32
33 try {
34 FileUtils.copyInputStreamToFile(attach.getInputStream(), file);
35 //FileUtils.writeByteArrayToFile(file, attach.getBytes());
36 //attach.transferTo(file);
37 } catch (Exception e) {
38 // TODO Auto-generated catch block
39 e.printStackTrace();
40 }
41 System.out.println(attach.getName()+" ======= "+attach.getOriginalFilename()+" ====== "+attach.getContentType());
42 }
43 userList.put(user.getUserName(), user);
44 return "redirect:/user/userlist";
45 }
46
47
48
49
50
51
52 3.处理文件上传-多文件上传
53
54 //添加用户时,为post请求,访问以下代码
55 @RequestMapping(value="/adduser",method=RequestMethod.POST)
56 public String add(@Validated User user,BindingResult bindingResult,@RequestParam("attachs") MultipartFile[] attachs,HttpServletRequest req){//紧跟validate之后写验证结果
57 if(bindingResult.hasErrors()){
58 //若有错误,直接掉转到add 视图
59 return "user/add";
60 }
61
62 String realPath = req.getSession().getServletContext().getRealPath("/resources/upload");
63 System.out.println(realPath);
64 //循环
65 for(MultipartFile attach:attachs){
66 if(!attach.isEmpty()){//判断文件是否为空
67 File file = new File(realPath+"/"+attach.getOriginalFilename());
68 try {
69 //FileUtils.copyInputStreamToFile(attach.getInputStream(), file);
70 //FileUtils.writeByteArrayToFile(file, attach.getBytes());
71 attach.transferTo(file);
72 } catch (Exception e) {
73 // TODO Auto-generated catch block
74 e.printStackTrace();
75 }
76 }
77 }
78 userList.put(user.getUserName(), user);
79 return "redirect:/user/userlist";
80 }
81
82
83
84
85
86 4.在add.jsp中的form表单中添加,如果是多文件上传就按照需求添加
87 <!--单文件上传文件-->
88 Attach:<input type="file" name="attach"/>
89
90 <!--多文件上传文件,注意:attachs-->
91 Attach1:<input type="file" name="attachs"/><br/>
92 Attach2:<input type="file" name="attachs"/><br/>
93 Attach3:<input type="file" name="attachs"/><br/>
94 Attach4:<input type="file" name="attachs"/><br/>