springMVC3學習 十二 --檔案上傳優化CommonsMultipartResolver
阿新 • • 發佈:2018-11-14
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
基於上一篇檔案上傳發現效率很慢,我們應該對它進行優化 使用springMVC對檔案上傳的解析器
來處理檔案上傳的時候需要在spring的applicationContext裡面加上springMVC提供的MultipartResolver的申明
這樣客戶端請求的時候 springMVC會檢查request裡面是否包含多媒體資訊 如果包含了就會使用MultipartResolver進行解析,
springMVC會使用一個支援檔案 處理的MultipartHttpServletRequest來包裹當前的HttpServletRequest
然後使用MultipartHttpServletRequest就可以對檔案進行處理了此處只改動FileController類 其他配置參考上一篇 http://blog.csdn.net/itmyhome1990/article/details/27976873
@Controllerpublic class FileController{ @RequestMapping("/fileUpload.do") public String fileUpload(HttpServletRequest request,HttpServletResponse response){ long startTime=System.currentTimeMillis(); //獲取開始時間 CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext()); if(multipartResolver.isMultipart(request)){ //判斷request是否有檔案上傳 MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request; Iterator<String> ite = multiRequest.getFileNames(); while(ite.hasNext()){ MultipartFile file = multiRequest.getFile(ite.next()); if(file!=null){ File localFile = new File("D:/"+file.getOriginalFilename()); try { file.transferTo(localFile); //將上傳檔案寫到伺服器上指定的檔案 } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } } long endTime=System.currentTimeMillis(); //獲取結束時間 System.out.println("上傳檔案共使用時間:"+(endTime-startTime)); return "success"; }}
同樣上傳一個3.54M的PDF檔案 只使用了16毫秒(已自己計算機實際為準)
可見差別之懸殊。
專案原始碼下載:http://download.csdn.net/detail/itmyhome/7453821