最初尝试单文件和多文件的上传
- 前端页面
<form role="form" th:action="@{/fileinputtest}" >
<div class="form-group">
<label for="exampleInputFile">单文件上传</label>
<input type="file" id="exampleInputFile" name="dan">
</div>
<div class="form-group">
<label for="exampleInputFile">多文件上传</label>
<input type="file"name="duo" multiple>
</form>
- controller
// @RequestMapping("/fileinputtest")
// public String fileinputtest(@RequestParam("email")String email,
// @RequestPart("dan")MultipartFile dan,
// @RequestPart("duo")MultipartFile[] duo){
// log.info("email:"+email+dan.getSize()+duo.length);
// return "/index";
// }
结果报Current request is not a multipart request
我上网查了一下如果需要实现文件上传功能首先请求头的contentType设置为 multipart /form-data,然后form表单上要加一个enctype=“multipart/form-data”。
- 修改后
<form role="form" th:action="@{/fileinputtest}" enctype="multipart/form-data" method="post">
@PostMapping(value = "/fileinputtest")
public String upload2(
@RequestParam("email")String email,
@RequestPart("dan")MultipartFile dan,
@RequestPart("duo")MultipartFile[] duo
) {
log.info("email:"+email+"dan"+dan.getName()+"duo" +duo.length);
return "/index";
};
因为默认是get,好像把get改成post就可以了。还要加一个enctype=“multipart/form-data”。
文件最大上传大小的写法,根据官方文档每个文件的配置最大为1Mb,单次请求的文件的总数不能大于10Mb。
spring.servlet.multipart.max-file-size=100MB
spring.servlet.multipart.max-request-size=1000MB
文件上传到服务器
@PostMapping("/fileinputtest")
public String fileinputtest(@RequestParam("email")String email,
@RequestPart("dan")MultipartFile dan,
@RequestPart("duo")MultipartFile[] duo) throws IOException {
log.info("email:"+email+dan.getSize()+duo.length);
if (!dan.isEmpty()){
String originalFilename=dan.getOriginalFilename();
dan.transferTo(new File("E:\\serve\\"+originalFilename));
}if(duo.length>0){
for (MultipartFile file:
duo ) {
String originalFilename=file.getOriginalFilename();
file.transferTo(new File("E:\\serve\\"+originalFilename));
}
}
return "/index";
}