1. 程式人生 > >springMVC3學習(十二)--檔案上傳優化CommonsMultipartResolver

springMVC3學習(十二)--檔案上傳優化CommonsMultipartResolver

基於上一篇檔案上傳發現效率很慢,我們應該對它進行優化  使用springMVC對檔案上傳的解析器

來處理檔案上傳的時候需要在springapplicationContext裡面加上springMVC提供的MultipartResolver的申明

這樣客戶端請求的時候 springMVC會檢查request裡面是否包含多媒體資訊 如果包含了就會使用MultipartResolver進行解析,

springMVC會使用一個支援檔案  處理的MultipartHttpServletRequest來包裹當前的HttpServletRequest

然後使用MultipartHttpServletRequest就可以對檔案進行處理了


此處只改動FileController類 其他配置參考上一篇 

[java]  view plain  copy   在CODE上檢視程式碼片 派生到我的程式碼片
  1. @Controller  
  2. public class FileController{  
  3.       
  4.     @RequestMapping
    ("/fileUpload.do")  
  5.     public String fileUpload(HttpServletRequest request,HttpServletResponse response){  
  6.         long startTime=System.currentTimeMillis();   //獲取開始時間  
  7.           
  8.         CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());  
  9.         if(multipartResolver.isMultipart(request)){ //判斷request是否有檔案上傳  
  10.             MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request;  
  11.             Iterator<String> ite = multiRequest.getFileNames();  
  12.             while(ite.hasNext()){  
  13.                 MultipartFile file = multiRequest.getFile(ite.next());  
  14.                 if(file!=null){  
  15.                     File localFile = new File("D:/"+file.getOriginalFilename());  
  16.                     try {  
  17.                         file.transferTo(localFile); //將上傳檔案寫到伺服器上指定的檔案  
  18.                     } catch (IllegalStateException e) {  
  19.                         e.printStackTrace();  
  20.                     } catch (IOException e) {  
  21.                         e.printStackTrace();  
  22.                     }  
  23.                 }  
  24.             }  
  25.         }  
  26.         long endTime=System.currentTimeMillis(); //獲取結束時間  
  27.         System.out.println("上傳檔案共使用時間:"+(endTime-startTime));  
  28.           
  29.         return "success";  
  30.     }  
  31. }  
同樣上傳一個3.54M的PDF檔案 只使用了16毫秒(已自己計算機實際為準)

可見差別之懸殊。

專案原始碼下載:http://download.csdn.net/detail/itmyhome/7453821