處理multipart形式的數(shù)據(jù)

前言

由于本人接觸最多的是電子商城的開發(fā),目前涉及到的接口數(shù)據(jù)處理最多的為字符串,少部分為圖片,因此處理大型文件的經(jīng)驗比較少。
在學習Java Spring過程中,了解到Java Spring處理數(shù)據(jù)過程中有很多值得學習的地方。就拿multipart來說,Spring為multipart提供了很多擴展性的配置,能夠針對不同的業(yè)務場景進行相關配置

multipart

對于表單提交,multipart格式的數(shù)據(jù)會將一個表單拆分成多個部分,每一個部分對應一個輸入域。在一半表單輸入中,它所對應的部分會放置文本形數(shù)據(jù),如果上傳文件的話,它可以對應是二進制
比如表單提交數(shù)據(jù)如下

firstName=ric&lastName=mansen&age=99

每一個參數(shù)用&分隔開
展示為multipart請求體如下

-----------webKitFFormBoundarysioud821
Content-Disposition: form-data; name="firstName"
ric

-----------webKitFFormBoundarysioud821
Content-Disposition: form-data; name="lastName"
manson

-----------webKitFFormBoundarysioud821
Content-Disposition: form-data; name="age"
99

如果為文件的話,multipart請求體如下

-----------webKitFFormBoundarysioud821
Content-Disposition: form-data; name="profilePicture"; fileName="me.jpg"
Content-type: image/jpeg
[[Binary image data goes here]]

文件請求體相比普通數(shù)據(jù)請求體多了Content-type的標示,以及數(shù)據(jù)是以二進制形式進行傳輸

配置multipart解析器

解析multipart中的數(shù)據(jù)的功能由Spring中的MultipartResolver策略接口實現(xiàn),通過這個實現(xiàn)來解析multipart請求中的內(nèi)容
Spring內(nèi)置了兩個MultipartResolver的實現(xiàn)提供給我們選擇

  • CommonsMultipartResolver: 使用 Jakarta Commons FileUpload解析multipart請求
  • StandardServletMultipartResolver: 依賴于Servlet 3.0對multipart請求的支持
    一般對于3.0或者更高級的版本,優(yōu)先使用StandardServletMultipartResolver,因為它使用了Servlet提供的功能,并且不需要依賴任何其他項目

servlet小簡介

Java Servlet是運行在web服務器或者應用服務器上的程序,它是作為來自 Web 瀏覽器或其他 HTTP 客戶端的請求和 HTTP 服務器上的數(shù)據(jù)庫或應用程序之間的中間層。
使用 Servlet,可以收集來自網(wǎng)頁表單的用戶輸入,呈現(xiàn)來自數(shù)據(jù)庫或者其他源的記錄,還可以動態(tài)創(chuàng)建網(wǎng)頁。
具體細節(jié)之后再去了解(原諒下本人懶惰0.0)

處理multipart請求

一般處理multipart請求,實在某個控制器方法參數(shù)上添加@RequestPart注解

@RequestMapping(value="/register", method=POST)
public String processRegistration (
  @RequestPart("profilePicture") byte[] profilePicture,
  @Valid Spitter spitter,
  Errors errors) {
  ...
}

以上就是上傳文件后,byte數(shù)組用于保存請求中對應的part數(shù)據(jù)(通過@RequestPart指定)

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容