首页 > 其他分享 >SpringBoot上传文件

SpringBoot上传文件

时间:2023-09-11 11:56:51浏览次数:31  
标签:文件 return SpringBoot ResultBody oldName file 上传 public String

application.yaml

配置上传路经,其实写在哪都行无所谓,就是引入配置文件,@Values注解赋值

web:
  #绝对路经
  upload-path: D://test/

spring
  servlet:
    multipart:
      enabled: true
      # 单个文件的最大上限
      max-file-size: 1024MB
      #单个请求的文件总大小上限
      max-request-size: 1024MB
  web:
    resources:
      static-locations: classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:${web.upload-path}

Controller

@PostMapping("/file")
    public ResultBody updateFile(@RequestParam("file") MultipartFile file){
        try {
            if (file.isEmpty()){
                return ResultBody.error("上传文件为空");
            }
            if (file.getSize() > MAX_POST_SIZE){
                return ResultBody.error("文件必须小于10MB");
            }
            return fileService.uploadFile(file);
        }catch (Exception e){
            e.printStackTrace();
            return ResultBody.error(e.getMessage());
        }
    }

Service

public ResultBody updateFile(int id, MultipartFile file) {
        try {
            String format = this.path_sdf.format(new Date());

            //随机命名
            String name = fileUtil.getNewRandomFileName(file.getOriginalFilename());
            
            File imgFolder = new File(fileUtil.getAbsoluteImgRootPath() + format);
            if (!imgFolder.isDirectory()) {
                imgFolder.mkdirs();
            }
            file.transferTo(new File(imgFolder, name));
            String cover = fileUtil.getRelativeImgRootPath() + format + name;
            return ResultBody.success(success);
            }
        }catch (Exception e){
            e.printStackTrace();
            return ResultBody.error("失败");
        }
    }

工具类

@Component
public class FileUtil {
    @Value("${web.upload-path}")
    public String uploadPath;

    private String getRelativeFilePath(String type) {
        return "uploads" + File.separator + type + File.separator;
    }
    public String getAbsoluteUploadsPath(){
        return uploadPath + "uploads/";
    }
    public String getAbsoluteFilePath(String type) {
        return uploadPath + getRelativeFilePath(type);
    }

    public String getAbsoluteImgRootPath() {
        return getAbsoluteFilePath("img");
    }


    public String getRelativeImgRootPath() {
        return getRelativeFilePath("img");
    }

    public String getNewRandomFileName(String oldName) {
        return UUID.randomUUID().toString()
                + oldName.substring(oldName.lastIndexOf("."));
    }

    public String getNewFileName(String oldName, String newName) {
        return newName + oldName.substring(oldName.lastIndexOf("."));
    }
}

标签:文件,return,SpringBoot,ResultBody,oldName,file,上传,public,String
From: https://www.cnblogs.com/amorfati/p/17693141.html

相关文章

  • SpringBoot跨域访问
    没有引入SpringSecuity的情况Christopher2021.10.23CORS后端跨域CORS是一种访问机制,Cross-OriginResourceSharing,跨域资源共享,通过在服务器端设置相应头,把发起跨域的原始域名添加到Access-Control-Allow-Origin中即可。何为跨域域,即域名,跨域,即从域名A申请访......
  • 百度上传插件Web Uploader
    WebUploader是由BaiduWebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件。在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览器,沿用原来的FLASH运行时,兼容IE6+,iOS6+,android4+。两套运行时,同样的调用方式,可供用户任意选用。采用大文件分......
  • 安全文件传输如何进行有效管控,从而促进业务的有序发展?
    随着信息化技术的不断发展,安全文件传输对于企业来说变得越来越重要,企业数据安全在近几年频繁发生,有不少企业都因数据泄漏而造成不同程度的损失,很多企业花费人力和财力采取各种措施,来确保自身数据安全和文件安全。然而,却往往忽略了,企业在平常的办公中,少不了外发文件的需要,尤其是现......
  • 关于spring的注解作用(springboot相较于spring 的不同)
      springboot的@Bean注解作用在方法上,它会将这个方法返回的类型实例注入spring容器。  <bean>标签代表一个实例(或对象),而不是一个类型。在Spring中,<bean>标签用于声明和配置一个bean实例。当我们在XML配置文件中使用<bean>标签时,我们定义的是一个具体的b......
  • Debezium系列之:获取Oracle JDBC驱动程序和XStream API文件
    Debezium系列之:获取OracleJDBC驱动程序和XStreamAPI文件一、背景二、详细步骤1.下载OracleClient包2.解压缩3.复制ojdbc8.jar和xstreams.jar文件4.创建环境变量三、XStream连接器属性一、背景DebeziumOracle连接器需要OracleJDBC驱动程序(ojdbc8.jar)才能连接到Oracl......
  • 分享一个 SpringBoot + Redis 实现「查找附近的人」的小技巧
    前言SpringDataRedis提供了十分简单的地理位置定位的功能,今天我就用一小段代码告诉大家如何实现。正文1、引入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>2、更......
  • 百度WebUploader开源上传控件
    前言首先声明一下,我这个是对WebUploader开源上传控件的二次封装,底层还是WebUploader实现的,只是为了更简洁的使用他而已.下面先介绍一下WebUploader简介:WebUploader是由BaiduWebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件。在现代的浏览器里面能......
  • vue3下载文件
    constdow=async(url:string,fileName:string)=>{mulSelUrls.value=[]mulSelUrls.value.push(urlasnever)constrequests=mulSelUrls.value.map(url=>axios.get(url,{responseType:'blob'}));try{constresponses=aw......
  • SpringBoot + 自定义注解,实现用户操作日志(支持SpEL表达式)
    背景一个成熟的系统,都会针对一些关键的操作,去创建用户操作日志。比如:XX人创建了一条订单,订单号:XXXXXXXXX因为操作人或者订单号是动态的,所以有些开发人员,不知道获取,就将这种操作日志和业务代码融在一起。我们当然要杜绝这种现象,一定会有更好的解决方案。当前项目除了......
  • Uniapp中文件预览的实现过程
    ❝本期介绍一下文件预览在uniapp中的具体实现!本文可能比较简单,但是也是比较实用,希望对大家有所帮助。❞文件预览我们无论在APP还是各大小程序上都不能直接预览,需要先下载缓存到本地才能预览文件下载使用uni.downloadFile先把文件缓存到本地uni.downloadFile({url:fileUrl,......