Spring Boot文件上传

配置文件上传属性:

在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);
        }
    }
相关推荐
g***86697 分钟前
springboot中配置logback-spring.xml
spring boot·spring·logback
p***q7812 分钟前
SpringBoot实战:高效实现API限流策略
java·spring boot·后端
学历真的很重要17 分钟前
Hello-Agents —— 03大语言模型基础 通俗总结
开发语言·人工智能·后端·语言模型·自然语言处理·面试·langchain
3***161020 分钟前
【JavaEE】Spring Boot 项目创建
java·spring boot·java-ee
6***v41724 分钟前
VScode 开发 Springboot 程序
java·spring boot·后端
t***316527 分钟前
SpringBoot中自定义Starter
java·spring boot·后端
橘子编程30 分钟前
经典排序算法全解析
java·算法·排序算法
z***33531 分钟前
SpringBoot获取bean的几种方式
java·spring boot·后端
aloha_78943 分钟前
联易融测开面试准备
java·python·面试·单元测试
s***46981 小时前
【SpringBoot篇】详解Bean的管理(获取bean,bean的作用域,第三方bean)
java·spring boot·后端