亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

SpringMVC處理multipart請求的示例代碼

2024-07-13 10:15:57
字體:
來源:轉載
供稿:網友

一、簡述

multipart格式的數據會將一個表單拆分為多個部分(part),每個部分對應一個輸入域。在一般的表單輸入域中,它所對應的部分中會放置文本型數據,但是如果上傳文件的話,它所對應的部分可以是二進制。類似這樣:

multipart,請求,SpringMVC,multipart請求

二、 配置 multipart 解析器

盡管multipart請求看起來很復雜,但在Spring MVC中處理它們卻很容易。在編寫控制器方法處理文件上傳之前,我們必須要配置一個multipart解析器,通過它來告訴DispatcherServlet該如何讀取multipart請求。

Spring 內置了兩個MultipartResolver的實現:

  1. CommonsMultipartResolver :使用Jakarta Commons FileUpload解析multipart請求;
  2. StandardServletMultipartResolver :依賴于Servlet 3.0對multipart請求的支持(始于Spring 3.1)。

StandardServletMultipartResolver的配置:

1、聲明Bean:

在applicationContext.xml 配置

 

復制代碼 代碼如下:
<bean id="multipartResolver" class="org.springframework.web.multipart.support.StandardServletMultipartResolver>

 

在配置類中配置

    @Bean(name = "multipartResolver")    public StandardServletMultipartResolver getStandardServletMultipartResolver(){        return new StandardServletMultipartResolver();    }

tips:multipart解析器的命名一定要是 multipartResolver ,否則會報錯。

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>    <!--上傳到/tmp/upload 目錄-->   <location>/tmp/upload</location>    <!--文件大小為2M-->   <max-file-size>2097152</max-file-size>    <!--整個請求不超過4M-->   <max-request-size>4194304</max-request-size>    <!--所有文件都要寫入磁盤-->   <file-size-threshold>0</file-size-threshold>  </multipart-config> </servlet> <servlet-mapping>  <servlet-name>dispatcherServlet</servlet-name>  <url-pattern>/</url-pattern> </servlet-mapping>

* 配置類中配置

繼承 AbstractAnnotationConfigDispatcherServletInitializer 的配置類

  @Override  protected void customizeRegistration(ServletRegistration.Dynamic registration) {    //上傳到/tmp/upload 目錄,文件大小為2M,整個請求不超過4M,而且所有文件都要寫入磁盤    registration.setMultipartConfig(new MultipartConfigElement("E://upload_ftp",2097152,4194304,0));  }

CommonsMultipartResolver的配置:

1、聲明Bean 和 配置上傳參數

  <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">    <!--設置上傳目錄/tmp/upload;最大的文件容量設置為2M;最大的內存大小設置為0,表示所有文件都會寫入磁盤中;無法設定multipart請求整體的最大容量-->    <property name="uploadTempDir" value="/tmp/upload"/>    <property name="maxUploadSize" value="2097152"/>    <property name="maxInMemorySize" value="0"/>  </bean>

區別:

1、 CommonsMultipartResolver 相比較 StandardServletMultipartResolver 來說 就是無法設定multipart請求整體的最大容量。

2、 CommonsMultipartResolver 不會強制要求設置臨時文件路徑。默認情況下,這個路徑就是 Servlet 容器的臨時目錄。 StandardServletMultipartResolver 必須設置臨時文件路徑才能正常執行。(以上所述上傳目錄均為臨時文件路徑)

三、SpringMVC 處理請求

1、前端Form 表單

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

tips:需要設置   enctype="multipart/form-data",以告訴SpringMVC 這是一個Multipart 請求。

2、后端MVC接受請求

  @RequestMapping(value = "/picture",method = RequestMethod.POST)  public String getHome(@RequestPart("picture") MultipartFile picture) throws IOException {    String name = picture.getName();    byte[] bytes = picture.getBytes();    picture.transferTo(new File("/"+picture.getOriginalFilename()));     //這里保存到文件系統的時候要用相對路徑,比如這里配置的是 /。以配置的上傳目錄為基準。即文件路徑 E:/upload_ftp/ 是保存的目錄    return "home";  }

tips:1、@RequestPart("picture") : 當注冊表單提交的時候,p icture 屬性將會給定一個 byte 數組,這個數組中包含了請求中對應 part 的數據(通過 @RequestPart 指定)。如果用戶提交表單的時候沒有選擇文件,那么這個數組會是空(而不是 null )。所以說我們甚至可以用byte[]數組接收Multipart請求而不用  MultipartFile。

2、MultipartFile :用MultipartFile方法接收為我們提供了很多的方法以便進行接下來的工作...

multipart,請求,SpringMVC,multipart請求

3、 以 Part的形式接受上傳的文件

就主體來言, Part 接口與 MultipartFile 并沒有太大的差別。  在很多情況下, Part 方法的名稱與 MultipartFile 方法的名稱是完全相同的。有一些比較類似,但是稍有差異,比如 getSubmittedFileName() 對應于 getOriginalFilename() 。類似地, write() 對應于 transferTo() ,借助該方法我們能夠將上傳的文件寫入文件系統中。

值得一提的是,如果在編寫控制器方法的時候,通過Part參數的形式接受文件上傳,那么就沒有必要設置MultipartResolver 了。只有使用MultipartFile的時候,我們才需要MultipartResolver。

  @RequestMapping(value = "/picture",method = RequestMethod.POST)  public String getHome(@RequestPart("picture") Part picture) throws IOException {    picture.write("/"+picture.getSubmittedFileName());    return "home";  }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美午夜电影在线| 国产精品一区二区性色av| 日韩成人在线视频| 国产精品观看在线亚洲人成网| 欧美综合一区第一页| 国产精品成久久久久三级| 国产精品日韩在线| 深夜福利国产精品| 成人国产亚洲精品a区天堂华泰| 成人免费网视频| 国产精品久久久久久久9999| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美精品一区二区免费| 久久久精品免费| 日本中文字幕久久看| 大伊人狠狠躁夜夜躁av一区| 91国内揄拍国内精品对白| 97久久久久久| 久久久久久国产精品三级玉女聊斋| 国产日产久久高清欧美一区| 欧美一级视频一区二区| 日韩精品高清视频| 国内精品久久久| 国产在线高清精品| 亚洲男女性事视频| 久久99精品视频一区97| 国产欧美在线看| 欧美一区二区三区免费观看| 美女999久久久精品视频| 在线日韩第一页| 亚洲va欧美va国产综合久久| 91极品女神在线| 久久久国产精品亚洲一区| 亚洲精品综合久久中文字幕| 91色琪琪电影亚洲精品久久| 亚洲第一精品自拍| 久久久之久亚州精品露出| 久久久精品中文字幕| 丝袜亚洲另类欧美重口| 久久精品视频导航| 国产精国产精品| 萌白酱国产一区二区| 国内精久久久久久久久久人| 成人亲热视频网站| 亚洲精品中文字| 国产99久久久欧美黑人| 日韩亚洲在线观看| 亚洲成人黄色在线| 狠狠躁夜夜躁人人躁婷婷91| 欧美极品少妇xxxxⅹ裸体艺术| 久久久国产精彩视频美女艺术照福利| 成人夜晚看av| 国产在线拍偷自揄拍精品| 欧美极度另类性三渗透| 亚洲a成v人在线观看| 精品无码久久久久久国产| 欧美精品情趣视频| 久久精品2019中文字幕| 久久久噜久噜久久综合| 欧美洲成人男女午夜视频| 最近日韩中文字幕中文| 91国产视频在线| 日韩av综合网| 国产午夜精品免费一区二区三区| 亚洲性69xxxbbb| 8x海外华人永久免费日韩内陆视频| 久久综合九色九九| 尤物yw午夜国产精品视频| 日韩av电影中文字幕| 中文字幕日韩专区| 日韩美女在线播放| 亚洲在线视频福利| 伦伦影院午夜日韩欧美限制| 亚洲国产精彩中文乱码av在线播放| 亚洲国产欧美一区二区三区久久| 久久久久久69| 91国内在线视频| 国产xxx69麻豆国语对白| 琪琪第一精品导航| 色婷婷av一区二区三区久久| 亚洲国产精品专区久久| 日韩小视频在线观看| 伊人久久大香线蕉av一区二区| 久久中文字幕在线| xxxx欧美18另类的高清| 91精品成人久久| 亚洲国产欧美一区二区三区久久| 亚洲春色另类小说| 欧美另类xxx| 伊是香蕉大人久久| 成人精品一区二区三区电影免费| 成人国产精品久久久| 中文国产成人精品| 国产精品最新在线观看| 蜜月aⅴ免费一区二区三区| 精品一区二区三区四区在线| 国产乱人伦真实精品视频| 国产va免费精品高清在线观看| 久久久久久久久久av| 亚洲人成网7777777国产| 日韩在线视频观看正片免费网站| 亚洲国产精彩中文乱码av| 久久夜色撩人精品| 欧美裸体男粗大视频在线观看| 国产69精品久久久久久| 91九色单男在线观看| 亚洲综合日韩在线| 亚洲午夜久久久久久久| 俺去啦;欧美日韩| 超碰精品一区二区三区乱码| 欧美激情乱人伦一区| 欧美极品少妇xxxxⅹ裸体艺术| 日本精品一区二区三区在线播放视频| 国产精品影片在线观看| 欧美激情高清视频| 日本在线观看天堂男亚洲| 91成人天堂久久成人| 亚洲午夜久久久久久久| 国产精品欧美日韩一区二区| 亚洲最大成人网色| 久久夜色精品国产欧美乱| 久久国产精品久久久久| 中文字幕综合在线| 成人黄色片在线| 日韩大片免费观看视频播放| 91精品视频大全| 日本高清久久天堂| 欧美专区福利在线| 福利视频第一区| 国产精品久久久| 国产一区二区三区网站| 黑人巨大精品欧美一区免费视频| 久久国产精彩视频| 久久人91精品久久久久久不卡| 97国产成人精品视频| 精品少妇一区二区30p| 国产日韩精品入口| 日韩亚洲欧美中文高清在线| 久久精品视频在线| 亚洲第一精品电影| 国产999精品久久久影片官网| 激情亚洲一区二区三区四区| 菠萝蜜影院一区二区免费| 欧洲永久精品大片ww免费漫画| 亚洲欧美成人一区二区在线电影| 色中色综合影院手机版在线观看| 亚洲韩国青草视频| 久久久电影免费观看完整版| 亚洲xxx视频| 91在线精品视频| 欧美中文在线观看| 精品久久香蕉国产线看观看gif| 九九久久久久久久久激情| 日韩精品在线播放| 日韩电影中文字幕| 中文字幕精品www乱入免费视频| 日韩在线观看电影| 91产国在线观看动作片喷水| 日韩精品高清在线| 丰满岳妇乱一区二区三区| 亚洲国产91精品在线观看| 国产极品jizzhd欧美| 国产精品福利在线观看| 亚洲一区二区三区四区视频|