溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Spring MVC如何處理Multipart/form-data

發(fā)布時(shí)間:2020-10-28 13:39:13 來源:億速云 閱讀:144 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關(guān)Spring MVC如何處理Multipart/form-data的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過來看看吧。

Multipart/form-data

Multipart/form-data 為表單的MIME編碼屬性之一,共有三個(gè)值

① application/x-www-form-urlencoded

② multipart/form-data

③ text/plain

①為Html表單默認(rèn)傳輸編碼類型

②是表單上傳的非文本的內(nèi)容,傳遞的是文件數(shù)據(jù),設(shè)置該屬性再配合post請(qǐng)求方式從而實(shí)現(xiàn)文件上傳

③是傳輸為純文本的意思,在發(fā)郵件時(shí)要設(shè)置這種編碼,拿text/plain和text/html做比較,前者用來傳輸純文本文件,后者則是傳遞html代碼的編碼類型,在發(fā)送頭文件時(shí)才用得上

上述所提到的MIME,它的英文全稱是"Multipurpose Internet Mail Extensions" 多功能Internet 郵件擴(kuò)充服務(wù),它是一種多用途網(wǎng)際郵件擴(kuò)充協(xié)議。通過MIME,瀏覽器的再請(qǐng)求,會(huì)告訴服務(wù)器接收的數(shù)據(jù)是什么類型.

Spring MVC 處理 Multipart/form-data

兩種實(shí)現(xiàn)方式:

1、CommonsMultipartResolver  :  依賴于Apache

2、StandardServletMultipartResolver  :  依賴于Servlet 3.0 ,SpringBoot默認(rèn)支持該方式

一、配置解析器

1、CommonsMultipartResolver 的配置

弊端:無法設(shè)置請(qǐng)求整體的最大容量

(1)聲明Bean和配置上傳參數(shù):

<bean id="multipartResolver" 
   class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="uploadTempDir" value="/temp"/>    <!--設(shè)置上傳目錄/temp -->
        <property name="maxUploadSize" value="2097152"/>   <!--最大文件容量設(shè)置為2M-->
        <property name="maxInMemorySize" value="0"/>    · <!--最大的內(nèi)存大小設(shè)置為0,超過0就寫入磁盤-->     
</bean>

2、StandardServletMultipartResolver 的配置   

(1)聲明Bean:

<bean id="multipartResolver" 
class="org.springframework.web.multipart.support.StandardServletMultipartResolver”>
@Bean(name = "multipartResolver")
public StandardServletMultipartResolver getStandardServletMultipartResolver(){
          return new StandardServletMultipartResolver();
          }

(2) 配置上傳參數(shù)

web.xml 配置

<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>
        <!--整個(gè)請(qǐng)求不超過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>

配置類中配置

<form action="/save" method="post" enctype="multipart/form-data">
          <input type="file" name="pic">
          <input type="submit">
</form> 

二、Spring MVC 處理

1、表單:

  <form action="/save" method="post" enctype="multipart/form-data">
          <input type="file" name="pic">
          <input type="submit">
   </form>

2、MVC接收:

@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;
    }  

感謝各位的閱讀!關(guān)于Spring MVC如何處理Multipart/form-data就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI