配置文件上传属性:
在application.properties文件中配置文件上传的属性,包括上传目录的路径、文件大小限制等。
java
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB
处理文件上传请求
上传的文件按照日期 进行归类,使用UUID
给文件重命名
java
@PostMapping("/upload/")
@ResponseBody
public Response upload(MultipartFile file) {
// 验证是否有文件
if(file == null || file.isEmpty()){
return Response.newFail("Upload failed, please select file",400);
}
// 文件保存目录
SimpleDateFormat sdf = new SimpleDateFormat("/yyyy/MM/dd/");
String format = sdf.format(new Date());
String filePath = "D:/flies/springboot/"+format;
// 验证文件夹
File folder = new File(filePath);
if (!folder.exists()) {
folder.mkdirs();
}
// 文件名
String fileName = UUID.randomUUID() + file.getOriginalFilename();
filePath = filePath + fileName;
File saveFile = new File(filePath);
try {
file.transferTo(saveFile);
return Response.newSuccess("Upload successful");
} catch (IOException e) {
e.printStackTrace();
return Response.newFail("Upload failed",50001);
}
}
文件过大
如果遇到文件过大出现413 状态码无结果
需要统一返回json,可以参考
Springboot封装统一返回结果及全局异常处理
配置文件保存路径
可以在配置中保存文件的存放位置,方便更改
配置文件
在application.properties
文件添加需要的配置
java
file.path=D:\\flies\\springboot\\
@ConfigurationProperties 注解
使用注解@ConfigurationProperties
将配置项和实体Bean
关联起来,实现配置项和实体类字段的关联,读取配置文件数据。
java
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Data
@Component
@ConfigurationProperties(prefix = "file")
public class FileConfig {
private String path;
}
使用
获取配置信息
java
FileConfig fileConfig = new FileConfig();
// 文件保存目录
String filePath = fileConfig.getPath();
java
@PostMapping("/upload/")
@ResponseBody
public Response upload(MultipartFile file) {
// 验证是否有文件
if(file == null || file.isEmpty()){
return Response.newFail("Upload failed, please select file",400);
}
FileConfig fileConfig = new FileConfig();
// 文件保存目录
String filePath = fileConfig.getPath();
// 验证文件夹
File folder = new File(filePath);
if (!folder.exists()) {
folder.mkdirs();
}
// 文件名
String fileName = UUID.randomUUID() + file.getOriginalFilename();
filePath = filePath + fileName;
File saveFile = new File(filePath);
try {
file.transferTo(saveFile);
return Response.newSuccess("Upload successful");
} catch (IOException e) {
e.printStackTrace();
return Response.newFail("Upload failed",50001);
}
}