SpringBoot文件上传

SpringBoot文件上传

1、页面表单

<form method="post" th:action="@{/upload}" enctype="multipart/form-data">
	选择文件:<input value="" type="file" name="file">
	<input value="" type="file" name="files" multiple>
	<button id="search" type="submit">提交</button>
</form>

2、文件上传代码

@Controller
public class UpFileTestController {

    @GetMapping("/upfile")
    public String upFile(){
        return "upfile/list";
    }

    @PostMapping("/upload")
    public String upload(@RequestPart MultipartFile file,
                         @RequestPart MultipartFile[] files) throws IOException {
        if (!file.isEmpty()){
            String originalFilename = file.getOriginalFilename();
            file.transferTo(new File("E:\\test\\"+originalFilename));
        }

        for(MultipartFile multipartFile : files){
            if (!multipartFile.isEmpty()){
                String originalFilename = System.currentTimeMillis()+multipartFile.getOriginalFilename();
                multipartFile.transferTo(new File("E:\\test\\"+originalFilename));
            }
        }
        return "redirect:/upfile";
    }
}

自动配置原理

文件上传自动配置类-MultipartAutoConfiguration-MultipartProperties

自动配置好了 StandardServletMultipartResolver 【文件上传解析器】
原理步骤
1、请求进来使用文件上传解析器判断(isMultipart)并封装(resolveMultipart,返回MultipartHttpServletRequest)文件上传请求
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)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZSECode

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值