springMVC3學習(十二)--檔案上傳優化CommonsMultipartResolver
阿新 • • 發佈:2018-11-09
基於上一篇檔案上傳發現效率很慢,我們應該對它進行優化 使用springMVC對檔案上傳的解析器
來處理檔案上傳的時候需要在spring的applicationContext裡面加上springMVC提供的MultipartResolver的申明
這樣客戶端請求的時候 springMVC會檢查request裡面是否包含多媒體資訊 如果包含了就會使用MultipartResolver進行解析,
springMVC會使用一個支援檔案 處理的MultipartHttpServletRequest來包裹當前的HttpServletRequest
然後使用MultipartHttpServletRequest就可以對檔案進行處理了
此處只改動FileController類 其他配置參考上一篇
[java] view plain copy
- @Controller
- public class FileController{
- @RequestMapping
- 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";
- }
- }
可見差別之懸殊。
專案原始碼下載:http://download.csdn.net/detail/itmyhome/7453821