首页 > 其他分享 >SpringBoot 文件上传到指定文件夹

SpringBoot 文件上传到指定文件夹

时间:2023-05-15 13:11:22浏览次数:32  
标签:文件 return SpringBoot upload 传到 文件夹 new public String

1、在application.yml文件中设置存储文件夹地址

upload:
  path: E:\upload\

2、配置映射路径

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //其中image表示访问的前缀。"file:E:/upload/"是文件真实的存储路径
        registry.addResourceHandler("/upload/**").addResourceLocations("file:E:/upload/");
    }
}

3、上传文件

上传文件类

@RestController
@RequestMapping("/user")
public class UserController {

    @Value("${upload.path}")
    private String filePath;


    //根据日期生成路径   2022/1/15/
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd/");

    /**
     * 上传文件
     */
    @PostMapping("/upload")
    public R<String> uploadFile(@RequestBody MultipartFile file) {
        if (file == null) return R.error("文件不能为空");
        //1、获取上传文件的名字
        String originalFilename = file.getOriginalFilename();
        //2、对原始文件名进行判断
        if (!originalFilename.endsWith(".jpg") && !originalFilename.endsWith(".png")) {
            return R.error("上传文件类型错误,请上传png或jpg类型的图片");
        }

        //3、使用工具类,防止重复 返回:af66cdc12867443787362575b92ca514.jpg
        String fileName = PathUtils.generateFilePath(originalFilename);
        //4、创建存储日期的文件夹
        String datePath = sdf.format(new Date());
        //5、创建目录
        File dir = new File(filePath + datePath, fileName);
        //6、如果不存在就创建该文件夹
        if (!dir.exists()) {
            dir.mkdirs();
        }
        try {
            //7、将文件转存到指定文件夹
            file.transferTo(dir);
        } catch (Exception e) {
            return R.error(e.getMessage());
        }
        return R.success(datePath + fileName);
    }
}

PathUtils类

public class PathUtils {

    public static String generateFilePath(String fileName){
        //uuid作为文件名
        String uuid = UUID.randomUUID().toString().replaceAll("-", "");
        //后缀和文件后缀一致,获取文件.jpg
        int index = fileName.lastIndexOf(".");
        // test.jpg -> .jpg
        String fileType = fileName.substring(index);
        return new StringBuilder().append(uuid).append(fileType).toString();
    }
}

结果返回类R

@Data
public class R<T> implements Serializable {
    private Integer code;       //编码:1成功,0和其它数字为失败
    private String msg;         //错误信息
    private T data;             //数据
    private Map map = new HashMap();   //动态数据

    public static <T> R<T> success(T object) {
        R<T> r = new R<T>();
        r.data = object;
        r.code = 1;
        return r;
    }
    public static <T> R<T> error(String msg) {
        R r = new R();
        r.msg = msg;
        r.code = 0;
        return r;
    }
    public R<T> add(String key, Object value) {
        this.map.put(key, value);
        return this;
    }
}

时间:2023-05-15 中午

标签:文件,return,SpringBoot,upload,传到,文件夹,new,public,String
From: https://www.cnblogs.com/huxiaoan1/p/17401549.html

相关文章

  • SpringBoot 使用 Sa-Token 完成注解鉴权功能
    注解鉴权——优雅的将鉴权与业务代码分离。本篇我们将介绍在Sa-Token中如何通过注解完成权限校验。Sa-Token是一个轻量级java权限认证框架,主要解决登录认证、权限认证、单点登录、OAuth2、微服务网关鉴权等一系列权限相关问题。Gitee开源地址:https://gitee.com/dromar......
  • SpringBoot 如何进行限流?
    1.概述联网系统通常都要面对大并发大流量的请求,在突发情况下(最常见的场景就是秒杀、抢购),瞬时大流量会直接将系统打垮,无法对外提供服务。为了防止出现这种情况最常见的解决方案之一就是限流,当请求达到一定的并发数或速率,就进行等待、排队、降级、拒绝服务等。限流是对某一时间窗......
  • SpringBoot2原理篇-黑马
     原理篇1自动配置1.1bean的加载方式【一】1自动配置1.1bean的加载方式【一】1.1.1环境准备创建一个新的工程模块【Maven的,不是SpringBoot的】 直接创建 一个全新的Maven工程【添加坐标】<dependencies><dependency><groupId>org.spring......
  • 【SpringBoot】【配置加载】 SpringBoot配置加载解析时机原理
    1 前言不知道大家对于配置文件的加载有没有考虑过是什么时候加载解析的,这节我们就来看看。2 执行入口我们就先来看看加载配置的入口,核心类就是 ConfigFileApplicationListener主要作用就是读取应用的配置文件并add到Environment的PropertySources列表里。那么实际的执行过......
  • 【转载】SpringBoot自带的工具类
    断言对象、数组、集合ObjectUtilsStringUtilsCollectionUtils文件、资源、IO流FileCopyUtilsResourceUtilsStreamUtils反射、AOPReflectionUtils[AopUtils][AopContext]最近发现同事写了不少重复的工具类,发现其中很多功能,Spring自带的都有。于是整......
  • 利用SpringBoot实现增删改查
    启动类//@MapperScan("")//@SpringApplicationpackagecom.example.demo;importorg.mybatis.spring.annotation.MapperScan;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;@Mapp......
  • 05-面试必会-SpringBoot&SpringCloud
    01-讲一讲SpringBoot自动装配的原理1.在SpringBoot项目的启动引导类上都有一个注解@SpringBootApplication这个注解是一个复合注解,其中有三个注解构成,分别是@SpringBootConfiguration:是@Configuration的派生注解,标注当前类是一个SpringBoot的配置类@......
  • java基于springboot+vue的房屋租赁管理系统、大学生租房管理系统,附源码+数据库+lw文档
    1、项目介绍根据大学生租房系统的功能需求,进行系统设计。前台功能:进入系统可以实现首页,房屋信息,房屋评价,公告资讯,个人中心,后台管理,意见反馈等功能进行操作;后台主要是管理员,房主和用户,主要功能包括首页,个人中心,房主管理,用户管理,房屋类型管理,房屋信息管理,预约看房管理,定金留房管......
  • windows删除此电脑主界面的文件夹
    修改注册表Win+r;regedit计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace删除框起来的部分......
  • maven创建springboot项目
    创建maven项目,pom.xml文件如下:<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation=&......