自动装配原理
查看源码
文件上传自动配置类-MultipartAutoConfiguration- MultipartProperties
自动配置好了 StandardServletMultipartResolver 【文件上传解析器】
原理步骤
1.请求进来使用文件上传解析器判断( isMultipart )并封装( resolveMultipart,返回MultipartHttpServletRequest )文件上传请求
如何是文件上传请求,会重新包装request。可以通过processedRequest != request是否相等,来确定确定当前请求是否为文件上传请求。
2.参数解析器来解析请求中的文件内容封装成MultipartFile
3.将request中文件信息封装为一个Map; MultiValueMap<String, MultipartFile>
FileCopyUtils。实现文件流的拷贝
@PostMapping("/upload")
public String upload(@RequestParam("email") String email,
@RequestParam("username") String username,
@RequestPart("headerImg") MultipartFile headerImg,
@RequestPart("photos") MultipartFile[] photos) throws IOException {
log.info("上传信息:email={},username={},headerImg={},photos={}",email,username,headerImg.getSize(),photos.length);
if(!headerImg.isEmpty()){
//保存文件到服务器 OSS服务器
String originalFilename = headerImg.getOriginalFilename(); //获取文件上传的源文件名
headerImg.transferTo(new File("D:\upload\"+originalFilename));
}
if(photos.length>0){
for (MultipartFile photo : photos) {
if(!photo.isEmpty()){
String originalFilename = photo.getOriginalFilename();
photo.transferTo(new File("D:\upload\"+originalFilename));
}
}
}
return "main";
}
```
```