這篇文章帶給大家的內容是關於Spring MVC處理Multipart/form-data的方法介紹(程式碼範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
Multipart/form-data
Multipart/form-data 為表單的MIME編碼屬性之一,共有三個值
① application/ x-www-form-urlencoded
② multipart/form-data
#③ text/plain
①為Html表單預設傳輸編碼類型
#②是表單上傳的非文字的內容,傳遞的是文件數據,設定該屬性再配合post請求方式從而實現文件上傳
③是傳輸為純文字的意思,在發郵件時要設定這種編碼,拿text/plain和text/html做比較,前者用來傳輸純文字文件,後者則是傳遞html代碼的編碼類型,在發送頭文件時才用得上
上述所提到的MIME,它的英文全名為"Multipurpose Internet Mail Extensions" 多功能Internet 郵件擴充服務,它是一種多用途網際郵件擴充協定。透過MIME,瀏覽器的再請求,會告訴伺服器接收的資料是什麼類型.
Spring MVC 處理 Multipart/form-data
兩種實作方式:
1、CommonsMultipartResolver : 依賴Apache
2、StandardServletMultipartResolver : 依賴Servlet 3.0 ,SpringBoot預設支援該方式
1、CommonsMultipartResolver 的設定
弊端:無法設定請求整體的最大容量
(1)宣告Bean與設定上傳參數:
1 2 3 4 5 6 | <bean id= "multipartResolver"
class = "org.springframework.web.multipart.commons.CommonsMultipartResolver" >
<property name= "uploadTempDir" value= "/temp" /> <!--设置上传目录/temp -->
<property name= "maxUploadSize" value= "2097152" /> <!--最大文件容量设置为2M-->
<property name= "maxInMemorySize" value= "0" /> · <!--最大的内存大小设置为0,超过0就写入磁盘-->
</bean>
|
登入後複製
2、StandardServletMultipartResolver 的配置
(1)宣告Bean:
1 2 | <bean id= "multipartResolver"
class ="org.springframework.web.multipart.support.StandardServletMultipartResolver”>
|
登入後複製
1 2 3 4 | @Bean(name = "multipartResolver" )
public StandardServletMultipartResolver getStandardServletMultipartResolver(){
return new StandardServletMultipartResolver();
}
|
登入後複製
(2) 配置上傳參數
web.xml 配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet- class >org.springframework.web.servlet.DispatcherServlet</servlet- class >
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<multipart-config>
<!--上传到/temp 目录-->
<location>/temp/upload</location>
<!--文件大小为2M-->
<max-file-size>2097152</max-file-size>
<!--整个请求不超过4M-->
<max-request-size>4194304</max-request-size>
<!--大于0M的所有文件都要写入磁盘-->
<file-size-threshold>0</file-size-threshold>
</multipart-config>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
|
登入後複製
配置類別中配置
1 2 3 4 | <form action= "/save" method= "post" enctype= "multipart/form-data" >
<input type= "file" name= "pic" >
<input type= "submit" >
</form>
|
登入後複製
二、Spring MVC 處理
1、表單:
1 2 3 4 | <form action= "/save" method= "post" enctype= "multipart/form-data" >
<input type= "file" name= "pic" >
<input type= "submit" >
</form>
|
登入後複製
2、MVC接收:
1 2 3 4 5 | @RequestMapping(value = "/save" ,method = RequestMethod.POST)
public String getHome(MultipartFile pic) throws IOException {
Files. copy (pic.getInputStream(), Paths.get(ServletContext.getRealPath( "/temp" ),pic.getOriginalFilename));
return null;
}
|
登入後複製
以上是Spring MVC處理Multipart/form-data的方法介紹(程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!