具体流程:
创建文件、复制multipartFile的内容到已创建的文件之中。
下面是具体代码:
其中multipartFile参数接受前端表单上传的文件。
@RequestMapping(value = "/file",method = RequestMethod.POST)
public void uploadFile(@RequestParam(name = "file") MultipartFile multipartFile)
{
//指定存放上传文件的目录
String fileDir = "C:\\ftpfile\\img3";
File dir = new File(fileDir);
//判断目录是否存在,不存在则创建目录
if (!dir.exists()){
dir.mkdirs();
}
//生成新文件名,防止文件名重复而导致文件覆盖
//1、获取原文件后缀名 .img .jpg ....
String originalFileName = multipartFile.getOriginalFilename();
String suffix = originalFileName.substring(originalFileName.lastIndexOf('.'));
//2、使用UUID生成新文件名
String newFileName = UUID.randomUUID() + suffix;
//生成文件
//这个时候文件就已经生成,但是并没有内容
File file = new File(dir, newFileName);
try {
//传输文件内容
multipartFile.transferTo(file);
System.out.println("上传文件成功!");
} catch (IOException e) {
System.out.println("上传文件失败!");
e.printStackTrace();
}
}
给出前端测试的form表单:
<form action="/upload/file" enctype="multipart/form-data" method="post">
<input type="file" name="file">
<button type="submit">上传文件</button>
</form>
给出官网有关上传文件的配置,以下是默认配置,可以使用yml或xml配置文件修改
# MULTIPART (MultipartProperties)
spring.servlet.multipart.enabled=true # Whether to enable support of multipart uploads.
spring.servlet.multipart.file-size-threshold=0B # Threshold after which files are written to disk.
spring.servlet.multipart.location= # Intermediate location of uploaded files.
spring.servlet.multipart.max-file-size=1MB # Max file size.
spring.servlet.multipart.max-request-size=10MB # Max request size.
spring.servlet.multipart.resolve-lazily=false # Whether to resolve the multipart request lazily at the time of file or parameter access.