1. 程式人生 > 實用技巧 >springmvc中檔案上傳

springmvc中檔案上傳

對錶單中的 enctype 屬性做個詳細的說明:   application/x-www=form-urlencoded:預設方式,只處理表單域中的 value 屬性值,採用這種編碼方式的表單會將表單域中的值處理成 URL 編碼方式。   multipart/form-data:只能配合psot請求這種編碼方式會以二進位制流的方式來處理表單資料,這種編碼方式會把檔案域指定檔案的內容也封裝到請求引數中,不會對字元編碼。   text/plain:除了把空格轉換為 "+" 號外,其他字元都不做編碼處理,這種方式適用直接通過表單傳送郵件。
1 <form action="${pageContext.request.contextPath}/admin/addUser
" method="post" enctype="multipart/form-data"> 2 使用者名稱稱:<input type="text" name="username"><br><br><br> 3 使用者性別:<input type="text" name="sex"><br><br><br> 4 使用者住址:<input type="text" name="address"><br><br><br> 5
<input type="submit" value="新增"> 6 </form>

  Servlet3.0規範已經提供方法來處理檔案上傳,但這種上傳需要在Servlet中完成。   而Spring MVC則提供了更簡單的封裝。   Spring MVC為檔案上傳提供了直接的支援,這種支援是用即插即用的MultipartResolver實現的。   Spring MVC使用Apache Commons FileUpload技術實現了一個MultipartResolver實現類:   CommonsMultipartResolver。因此,SpringMVC的檔案上傳還需要依賴Apache Commons
FileUpload的元件。、 匯入上傳檔案支援的依賴
 1 <dependency>
 2             <groupId>commons-fileupload</groupId>
 3             <artifactId>commons-fileupload</artifactId>
 4             <version>1.3.3</version>
 5         </dependency>
 6         <dependency>
 7             <groupId>javax.servlet</groupId>
 8             <artifactId>javax.servlet-api</artifactId>
 9             <version>4.0.1</version>
10         </dependency>

配置springmvc.xml,註冊bean進入spring

1   <!--檔案上傳配置-->
2     <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
3         <!-- 請求的編碼格式,必須和jSP的pageEncoding屬性一致,以便正確讀取表單的內容, 預設為ISO-8859-1 -->
4         <property name="defaultEncoding" value="utf-8"/>
5         <!-- 上傳檔案大小上限,單位為位元組(10485760=10M) -->
6         <property name="maxUploadSize" value="10485760"/>
7         <property name="maxInMemorySize" value="40960"/>
8     </bean>
CommonsMultipartFile 的 常用方法:   String getOriginalFilename():獲取上傳檔案的原名   InputStream getInputStream():獲取檔案流   void transferTo(File dest):將上傳檔案儲存到一個目錄檔案中