Spring默認(rèn)提供文件上傳的功能。使用起來非常簡單,我們也可以使用Apache的CommonsUpload包。這里我們使用Spring自己的解析。
基本用法
1.在Spring配置中添加多部分解析器接口的Bean。
@Bean(
名稱= {多部分解析器}
)@ conditionalonnissingBean({ Multipartresolver . class })publistandardservletMultipartresolver erMultipartresolver(){
standardservletMultipartresolver = newstandardservletMultipartresolver();
multipart resolver . setresolvelazily(this . multipart properties . isresolverlally());returnmultipartResolver
}
2.前端表單類型方法是POST方法,enctype是多部分/表單數(shù)據(jù)
form method = post action =/formenctype = multipart/form-data
inputtype=textname=name/
input type = filename = file/input type = submit//form
3.在Controller文件中寫入相應(yīng)的映射,上傳文件的內(nèi)容就可以通過MultiPartFile獲取和處理
@PostMapping(/form)
publicStringhandleFormUpload(
@RequestParam(name)Stringname,
@ RequestParam(file)MultiperFileFileFile)throwSioException { if(!file . isempty()){ byte[]bytes = file . GetBytes();//storebytessomewhreturn redirect:upload success;
} return redirect:upload failure;
}
原理
1.Spring的DispatchServlet可以檢測當(dāng)前請求是否是一個(gè)多部分請求。
前端控制器2.如果檢測到是多部分請求,請解析多部分請求
前端控制器2.1確定它是否是一個(gè)多部分請求
StandardServletMultipartResolver2.2解析多部分請求。
StandardServletMultipartResolver3.具體分析過程。部分是底層的原生API,可以通過HttpServletRequest直接調(diào)用。然后封裝請求的零件參數(shù)。
標(biāo)準(zhǔn)多部分httpersvletrequest3.1我們可以看到前端多部分/表單數(shù)據(jù)上傳請求的類型是
表單請求部分4.創(chuàng)建了多部分文件的實(shí)現(xiàn)。前端表單上傳的多部分零件是從零件獲取的。
標(biāo)準(zhǔn)多部分文件5.在控制器中,您可以使用參數(shù)映射來獲取上傳的多部分部分。
控制器文件總結(jié)
這次主要分析的是StandardServlet MultipartResolver,Apache下的CommonsMultipartResolver的處理程序大致相同,可以自行分析。通過這種分析,可以定制更靈活的方案來處理后臺(tái)解析文件的請求。
1.《enctype Spring文件上傳功能源碼剖析》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無關(guān),侵刪請聯(lián)系頁腳下方聯(lián)系方式。
2.《enctype Spring文件上傳功能源碼剖析》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。
3.文章轉(zhuǎn)載時(shí)請保留本站內(nèi)容來源地址,http://f99ss.com/junshi/1545151.html