首頁 > Java > java教程 > Spring MVC處理Multipart/form-data的方法介紹(程式碼範例)

Spring MVC處理Multipart/form-data的方法介紹(程式碼範例)

不言
發布: 2019-02-22 13:43:24
轉載
6853 人瀏覽過

這篇文章帶給大家的內容是關於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與設定上傳參數:

<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:

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

(2) 配置上傳參數

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>
        <!--整个请求不超过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;
    }  
登入後複製

以上是Spring MVC處理Multipart/form-data的方法介紹(程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:cnblogs.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板