SpringBoot实现FileUpload
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.5.15</version>
</dependency>
- 2.编写配置文件,使用CommonsMultipartResolver解析器
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.multipart.MultipartResolver;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import java.nio.charset.StandardCharsets;
@Configuration
public class UploadConfig {
@Bean(name = "multipartResolver")
public MultipartResolver multipartResolver(){
CommonsMultipartResolver resolver = new CommonsMultipartResolver();
resolver.setDefaultEncoding(StandardCharsets.UTF_8.name());
resolver.setResolveLazily(true);
resolver.setMaxInMemorySize(10240);
resolver.setMaxUploadSize(50*1024*1024);
return resolver;
}
}
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta http-equiv="Content-Type" content="multipart/form-data;charset=utf-8"/>
</head>
<body>
<form id="uploadForm" enctype="multipart/form-data" method="post" action="/fp">
<span style="color: red">文件上传</span>
<input id="file" type="file" name="file"><br>
<input type="submit" value="确认上传图片">
</form>
</body>
</html>
- 4.SpringBoot启动类排除掉MultipartAutoConfiguration
@SpringBootApplication(exclude = {MultipartAutoConfiguration.class})
private static final Logger LOGGER = LoggerFactory.getLogger(TestController.class);
@ResponseBody
@PostMapping("/fp")
public String fileUpload(@RequestParam("file") MultipartFile file) {
String originalFilename = file.getOriginalFilename();
LOGGER.info("原始文件名:{}",originalFilename);
Assert.notNull(originalFilename,"originalFilename must be not null");
String suffix = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);
LOGGER.info("文件后缀名:{}",suffix);
String prefix = new RandomGenerator(4).generate();
String finalFileName = prefix+System.currentTimeMillis()+"."+suffix;
LOGGER.info("上传文件最终名:{}",finalFileName);
File dest = new File("D:"+File.separator+"test"+File.separator+finalFileName);
if (!dest.exists()){
dest.getParentFile().mkdirs();
dest.createNewFile();
}
try
{
file.transferTo(dest);
return "upload file success";
}
catch (IOException e)
{
LOGGER.error(e.getMessage(),e);
return "upload file failed";
}
}