第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

Spring文件上傳功能源碼剖析

標(biāo)簽:
Spring

Spring默认提供了文件上传的功能。用起来非常简单,我们也可以使用第三方的如Apache的CommonsUpload包来处理。这里我们使用Spring自带的解析。

基本用法

1、在Spring配置中,加上MultipartResolver接口的Bean。

@Bean(
    name = {"multipartResolver"}
)@ConditionalOnMissingBean({MultipartResolver.class})public StandardServletMultipartResolver multipartResolver() {
    StandardServletMultipartResolver multipartResolver = new StandardServletMultipartResolver();
    multipartResolver.setResolveLazily(this.multipartProperties.isResolveLazily());    return multipartResolver;
}

2、前端表单类型method为POST方法,enctype为”multipart/form-data”

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

3、Controller文件中写好相应的映射,上传文件的内容可以通过MultiPartFile来获取字节流并处理

   
    @PostMapping("/form") 
    public String handleFormUpload(
            @RequestParam("name") String name,
            @RequestParam("file") MultipartFile file) throws IOException {        if (!file.isEmpty()) {            byte[] bytes = file.getBytes(); // store the bytes somewhere return "redirect:uploadSuccess"; 
        }        return "redirect:uploadFailure";
    }

原理

1、Spring的DispatchServlet可以检测到当前的请求是否为MultiPart请求。


1000

DispatchServlet



2、如果检测为MultiPart请求,则去解析MultiPart请求


1000

DispatchServlet


2.1 判断是否为MultiPart请求

1000

StandardServletMultipartResolver

2.2 解析MultiPart请求。

1000

StandardServletMultipartResolver

3、具体解析流程。Part为底层原生的API,可以通过HttpServletRequest直接调用。然后将请求的Part参数封装起来。

1000

StandardMultipartHttpServletRequest

3.1 我们可以看到前端mutipart/form-data上传请求的类型为


1000

表单请求部分

4、创建了MultiPartFile实现。前端表单上传的MultiPart部分都从Part获取。

1000

StandardMultipartFile

5、在Controller中则可以使用参数映射来获取上传的MultiPart部分。


1000

Controller文件

小结

这次主要解析了StandardServletMultipartResolver,关于Apache下的CommonsMultipartResolver处理过程也大体相当,可自行解析。通过这次分析在后台解析文件的请求处理上,可定制更加灵活的方案来处理。

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
JAVA開發(fā)工程師
手記
粉絲
1.1萬
獲贊與收藏
1545

關(guān)注作者,訂閱最新文章

閱讀免費(fèi)教程

  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報(bào)

0/150
提交
取消