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> 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM