国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - SpringMVC處理multipart請求的示例代碼

SpringMVC處理multipart請求的示例代碼

2021-03-15 12:10JMCui Java教程

本篇文章主要介紹了SpringMVC處理multipart請求的示例代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

一、簡述

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

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>

 

 

在配置類中配置

?
1
2
3
4
@bean(name = "multipartresolver")
public standardservletmultipartresolver getstandardservletmultipartresolver(){
    return new standardservletmultipartresolver();
}

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

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>
   <!--上傳到/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 的配置類

?
1
2
3
4
5
@override
protected void customizeregistration(servletregistration.dynamic registration) {
  //上傳到/tmp/upload 目錄,文件大小為2m,整個請求不超過4m,而且所有文件都要寫入磁盤
  registration.setmultipartconfig(new multipartconfigelement("e:\\upload_ftp",2097152,4194304,0));
}

commonsmultipartresolver的配置:

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

?
1
2
3
4
5
6
<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 表單

?
1
2
3
4
<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接受請求

?
1
2
3
4
5
6
7
8
@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方法接收為我們提供了很多的方法以便進行接下來的工作...

SpringMVC處理multipart請求的示例代碼

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

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

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

?
1
2
3
4
5
@requestmapping(value = "/picture",method = requestmethod.post)
public string gethome(@requestpart("picture") part picture) throws ioexception {
  picture.write("/"+picture.getsubmittedfilename());
  return "home";
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://www.cnblogs.com/jmcui/p/8179174.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 亚洲三级在线免费观看 | 91免费在线| av免费在线观看网站 | 日韩中文字幕视频在线 | 黄色a一级片| 亚洲视频免费观看 | 1区2区视频 | 精品日韩 | 国产精品久久久爽爽爽麻豆色哟哟 | 91久久精品国产91久久 | 一区二区在线免费观看 | 成人理论片 | 免费国产wwwwwww网站 | 欧美自拍视频 | 亚洲欧美在线一区 | 色天天综合久久久久综合片 | 久久思久久 | 日韩欧美中文字幕在线视频 | 在线观看国产二区 | 中文字幕久热 | 四虎欧美 | 久久久成人精品 | 久久精品久久久久久 | 日韩成人免费av | 日韩和的一区二在线 | 免费欧美一级 | 精品一级 | 久草久 | 依人在线免费视频 | 日韩精品一区二区三区在线观看 | 精品久久久久久亚洲精品 | 国产精品亚洲综合 | 免费啪啪网站 | 免费的av网站 | 色婷婷综合久久久中文字幕 | xvideos.蜜桃一区二区 | 久久免费99精品久久久久久 | 激情欧美一区二区三区中文字幕 | 91丨九色丨国产 | 美女88av | 日韩欧在线 |