Spring默认提供文件上传的功能。使用起来非常简单,我们也可以使用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是多部分/表单数据
form method = post action =/formenctype = multipart/form-data
inputtype=textname=name/
input type = filename = file/input type = submit//form
3.在Controller文件中写入相应的映射,上传文件的内容就可以通过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可以检测当前请求是否是一个多部分请求。
前端控制器2.如果检测到是多部分请求,请解析多部分请求
前端控制器2.1确定它是否是一个多部分请求
StandardServletMultipartResolver2.2解析多部分请求。
StandardServletMultipartResolver3.具体分析过程。部分是底层的原生API,可以通过HttpServletRequest直接调用。然后封装请求的零件参数。
标准多部分httpersvletrequest3.1我们可以看到前端多部分/表单数据上传请求的类型是
表单请求部分4.创建了多部分文件的实现。前端表单上传的多部分零件是从零件获取的。
标准多部分文件5.在控制器中,您可以使用参数映射来获取上传的多部分部分。
控制器文件总结
这次主要分析的是StandardServlet MultipartResolver,Apache下的CommonsMultipartResolver的处理程序大致相同,可以自行分析。通过这种分析,可以定制更灵活的方案来处理后台解析文件的请求。
1.《enctype Spring文件上传功能源码剖析》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《enctype Spring文件上传功能源码剖析》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/junshi/1545151.html