javascript
form表单上传文件_SpringBoot中如何使用SpringMVC上传文件?
今天我們要說的這個話題很簡單,不要問為啥,因為SpringBoot,哈哈。現(xiàn)在SpringBoot可以說人人都會用了,它的好處是顯而易見的,大大的簡化了配置,一起來看看吧。
我們分以下3種情況來談這個話題。
第一種:上傳單個文件
先來看一下form表單的設(shè)置,如下圖所示:
單個文件的form
form表單要滿足以下3點才行:
SpringMVC的設(shè)置如下:
SpringMVC接收單個文件
從圖中可以看出服務(wù)端的寫法非常簡單,直接寫Controller就行了。簡單地說明一下,processUpload方法的參數(shù)要用MultipartFile接口來接收,這樣SpringMVC才能接收到文件類型的輸入項,之所以這么簡單主要是因為SpringBoot已經(jīng)為我們做好了所有的準(zhǔn)備工作。當(dāng)然了@RequestParam注解也可以換成@RequestPart,如圖:
@RequestPart
我們這個這里返回了"redirect:/",用于重定向到根路徑。
那么接下來我們就來看一下怎么上傳多個文件。
第二種:不同的name上傳多個文件
這種是由上傳單一文件引申出來的,其實就是form表單上傳多個數(shù)據(jù)項,只不過有多個file類型的input。這些多個不同的input通過name進行區(qū)分。如下圖的3個input的name分別是file1、file2、file3:
多個不同的name
SpringMVC端就用多個參數(shù)來接收,很簡單的,如下圖:
接收多個file
這種場景屬于上傳多個圖片,還不是通常意義上的批量上傳,一個name代表一個種類,每個種類下含有一張圖片。
第三種:同一個name上傳多個文件
這種方式是把表單中的file類型的input設(shè)置成同一個name,這樣SpringMVC就會把它們當(dāng)做數(shù)組或列表來對待,form表單的寫法如下,它們的name都是files:
同一個name
SpringMVC端使用MultipartFile列表來接收文件如下圖,其中txt用于接收表單中的一個輸入框:
List接收文件
如果換成數(shù)組接收的話就如同下圖所示:
數(shù)組接收文件
這種場景才屬于真正意義上的批量上傳,比如同一個主題下的多個圖片。
MultipartFile接口提供的方法
我們現(xiàn)在看一下MultipartFile接口的一些方法,理解這些方法對于編程還是很有好處的,可以快速提高我們的開發(fā)效率。
String getName();
獲取參數(shù)在表單中的名稱
String getOriginalFilename();
獲取文件的原始名稱,比如你上傳的是apple.jpeg,那么這個方法返回的就是apple.jpeg。
String getContentType();
返回http請求的ContentType
boolean isEmpty();
判斷上傳的文件是否為空
long getSize();
返回文件的字節(jié)數(shù)形式的大小
byte[] getBytes();
返回文件的字節(jié)數(shù)組
InputStream getInputStream();
返回一個代表該文件的輸入流,通常用于關(guān)閉流
void transferTo(File dest);
把接收到的文件寫入到目的文件中,如果目的文件已經(jīng)存在了則會先進行刪除。用法如下:
file.transferTo(new File("/Users/i/apple.jpeg"));
void transferTo(Path dest)
作用同void transferTo(File dest);
總結(jié)
好了,今天的內(nèi)容就這些了,主要和大家分享了基于SpringBoot的上傳文件的方式,包括上傳單個文件,上傳多個不同name的文件和上傳多個相同name的文件。另外還介紹了MultipartFile接口的常用功能。其中transferTo還是很實用的。
今天的內(nèi)容就到這里了,小伙伴們有什么疑問可以在評論區(qū)留言哦。
總結(jié)
以上是生活随笔為你收集整理的form表单上传文件_SpringBoot中如何使用SpringMVC上传文件?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python3.6.2下载教程_Wind
- 下一篇: 概要设计实例_尽可能通用的运维CMDB的