springmvc文件上传

1.加入jar包:

commons-fileupload-1.2.2.jar

commons-io-2.0.1.jar

lperson.java中加属性,实现get ,set方法

private String photoPath;

2.创建WebRoot/upload目录,存放上传的文件

1 <sf:form id="p" action="saveOrUpdate" 
2     method="post" 
3     modelAttribute="person" 
4     enctype="multipart/form-data">
5 
6     <sf:hidden path="id"/> 
7     name: <sf:input path="name"/><br>
8     age: <sf:input path="age"/><br>
9     photo: <input type="file" name="photo"/><br>

上面第9行文件上传框,不能和实体对象属性同名,类型不同

 

controller配置

 1 12、文件上传功能实现 配置文件上传解析器
 2 @RequestMapping(value={"/saveOrUpdate"},method=RequestMethod.POST)
 3 public String saveOrUpdate(Person p,
 4         @RequestParam("photo") MultipartFile file,
 5         HttpServletRequest request
 6 ) throws IOException{
 7     if(!file.isEmpty()){
 8         ServletContext sc = request.getSession().getServletContext();
 9         String dir = sc.getRealPath(“/upload”);    //设定文件保存的目录
10         
11         String filename = file.getOriginalFilename();    //得到上传时的文件名
12         FileUtils.writeByteArrayToFile(new File(dir,filename), file.getBytes());
13         
14         p.setPhotoPath(“/upload/”+filename);    //设置图片所在路径
15         
16         System.out.println("upload over. "+ filename);
17     }    
18     ps.saveOrUpdate(p);    
19     return "redirect:/person/list.action";   //重定向
20 }

3.文件上传功能实现 spring-mvc.xml 配置文件上传解析器

1     <!-- 文件上传解析器 id 必须为multipartResolver -->
2     <bean id="multipartResolver" 
3         class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
4         <property name="maxUploadSize" value=“10485760"/>    
5     </bean>
6 
7 maxUploadSize以字节为单位:10485760 =10M   id名称必须这样写
1 映射资源目录
2 <mvc:resources location="/upload/" mapping="/upload/**"/>

 

随即文件名常用的三种方式:

文件上传功能(增强:防止文件重名覆盖)

fileName = UUID.randomUUID().toString() + extName;

fileName = System.nanoTime() + extName;

fileName = System.currentTimeMillis() + extName;

 

 1 if(!file.isEmpty()){
 2     ServletContext sc = request.getSession().getServletContext();
 3     String dir = sc.getRealPath("/upload");
 4     String filename = file.getOriginalFilename();
 5     
 6 
 7     long _lTime = System.nanoTime();
 8     String _ext = filename.substring(filename.lastIndexOf("."));
 9     filename = _lTime + _ext;
10     
11     FileUtils.writeByteArrayToFile(new File(dir,filename), file.getBytes());
12     
13     p.setPhotoPath("/upload/"+filename);
14     
15     System.out.println("upload over. "+ filename);
16 }

图片显示 personList.jsp

 1 <td><img src="${pageContext.request.contextPath}${p.photoPath}">${p.photoPath}</td> 

 

 

 

posted on 2014-06-21 20:51  wf110  阅读(15516)  评论(0编辑  收藏  举报