SpringMVC使用FileUpload進行文件上傳

導入FileUpload和common-io的Jar包

注意:1、Struts2需要使用其他方法:struts2過濾時,會改變reqeust的類型,由HttpServletRequest變成MultiPartRequestWrapper

1、Test.jsp:

  1. <form action="<%=basePath%>self/testFileUpload.do" method="post" enctype="multipart/form-data">  
  2.         <input type="text" name="num">  
  3.         <input name="img1" type="file" accept="image/gif,image/jpg,image/png,image/jpeg"/>  
  4.         <input name="img2" type="file" accept="image/gif,image/jpg,image/png,image/jpeg"/>  
  5.         <input type="submit" name="test">  
  6.         <input type="reset" name="test1">  
  7.     </form>  

2、controller:
  1. @RequestMapping(value="/testFileUpload")  
  2.     public void  testFileUpload(HttpServletRequest request,HttpServletResponse response) throws Exception{  
  3.         String num = "";  
  4.         String img1 = "";  
  5.         String img2 = "";  
  6.         String fileName = "";  
  7.         try {  
  8.             String t = request.getCharacterEncoding();  
  9.             boolean isMultipart = ServletFileUpload.isMultipartContent(request);//判斷是否是表單文件類型  
  10.             if(isMultipart){  
  11.                 DiskFileItemFactory factory = new DiskFileItemFactory();  
  12.                 ServletFileUpload upload = new ServletFileUpload(factory);  
  13.                 upload.setHeaderEncoding(request.getCharacterEncoding());//這裏很重要啊 解決linux環境下上傳文件名亂碼的問題  
  14.                 //upload.setFileSizeMax(3*1024*1024);//3M  
  15.                 List items = upload.parseRequest(request);  
  16.                 if(items.size() == 0){  
  17.                     System.out.println("無數據");  
  18.                 }  
  19.                 Iterator<Object> formItem = items.iterator();  
  20.                 while(formItem.hasNext()){  
  21.                     FileItem item = (FileItem) formItem.next();  
  22.                     //如果是表單元素  
  23.                     if(item.isFormField()){  
  24.                         if (item.getFieldName().equals("num")) {  
  25.                             num = item.getString(request.getCharacterEncoding()).trim();  
  26.                         }  
  27.                     }  
  28.                     //如果不是表單元素  
  29.                     if(!item.isFormField()){  
  30.                         String name = item.getName();  
  31.                         String type = item.getContentType();  
  32.                         long sizeInBytes = item.getSize();  
  33.                           
  34.                         try {  
  35.                             String fullName = item.getName().trim();  
  36.                             if(fullName != ""){  
  37.                                 fileName = System.currentTimeMillis() + fullName.substring(fullName.indexOf("."));  
  38.                                 if(item.getFieldName().equals("img1")){  
  39.                                     fileName = "img1-" + System.currentTimeMillis() + fullName.substring(fullName.indexOf("."));  
  40.                                 }  
  41.                                 if(item.getFieldName().equals("img2")){  
  42.                                     fileName = "img2-" + System.currentTimeMillis() + fullName.substring(fullName.indexOf("."));  
  43.                                 }  
  44.                                 String tomcatRoot = FileOperator.getRootPath();  
  45.                                 String path = tomcatRoot;  
  46.                                 if(FileOperator.FileUploadEx(path, fileName, item.getSize(), item.getInputStream())){  
  47.                                     if(item.getFieldName().equals("img1")){  
  48.                                         System.out.println("testimg1");  
  49.                                     }  
  50.                                     if(item.getFieldName().equals("img2")){  
  51.                                         System.out.println("testimg2");  
  52.                                     }  
  53.                                 }  
  54.                             }  
  55.                               
  56.                         } catch (Exception e) {  
  57.                             e.printStackTrace();  
  58.                         }  
  59.                     }  
  60.                 }  
  61.             }else{  
  62.                 System.out.println("非multipart/form-data提交方式");  
  63.             }  
  64.               
  65.               
  66.         } catch (Exception e) {  
  67.             e.printStackTrace();  
  68.         }  
  69.     } 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章