springmvc中檔案上傳
阿新 • • 發佈:2020-08-13
對錶單中的 enctype 屬性做個詳細的說明:
application/x-www=form-urlencoded:預設方式,只處理表單域中的 value 屬性值,採用這種編碼方式的表單會將表單域中的值處理成 URL 編碼方式。
multipart/form-data:只能配合psot請求這種編碼方式會以二進位制流的方式來處理表單資料,這種編碼方式會把檔案域指定檔案的內容也封裝到請求引數中,不會對字元編碼。
text/plain:除了把空格轉換為 "+" 號外,其他字元都不做編碼處理,這種方式適用直接通過表單傳送郵件。
FileUpload的元件。、
匯入上傳檔案支援的依賴
1 <form action="${pageContext.request.contextPath}/admin/addUserServlet3.0規範已經提供方法來處理檔案上傳,但這種上傳需要在Servlet中完成。 而Spring MVC則提供了更簡單的封裝。 Spring MVC為檔案上傳提供了直接的支援,這種支援是用即插即用的MultipartResolver實現的。 Spring MVC使用Apache Commons FileUpload技術實現了一個MultipartResolver實現類: CommonsMultipartResolver。因此,SpringMVC的檔案上傳還需要依賴Apache Commons" 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>
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):將上傳檔案儲存到一個目錄檔案中