Spring Boot 封装文件上传工具类

简介: Spring Boot 封装文件上传工具类

springboot 实现文件的上传这里我用的是commins-io依赖:

坐标如下:

 <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.4</version>
    </dependency>

引入这个依赖之后就可以使用下面这个工具类进行文件上传的操作了:

如下:

package com.tourism.fzll.util;
import java.io.File;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.multipart.MultipartFile;
public class FileUploadUtil {
  public static String upload(MultipartFile file) {
    try {
      String extName = file.getOriginalFilename();
      // 获取文件后缀
      if (extName.lastIndexOf(".") <= 0) {
        throw new RuntimeException("不支持该文件类型");
      }
      extName = extName.substring(extName.lastIndexOf("."));
      String webUrl = getWebUrl();
      String fileName = getFileName();
      String sysPath = System.getProperty("catalina.home") + "/webapps";
      // 获取文件名字
      fileName = getFileName() + extName;
      // 获取文件地址
      String filePath = "/content/" + fileName;
      String Url = sysPath +"/content/";
      File file2 = new File(Url);
      if (!file2.exists()) {
        file2.mkdirs();
      }
      file.transferTo(new File(sysPath + filePath));
      return webUrl + filePath;
    } catch (Exception e) {
      throw new RuntimeException(e);
    }
  }
  /**
   * 
   * @Title: upload 
   * @Description: (将文件保存到指定的路径下) 
   * @param file
   * @return  
   * @date 2019年9月30日 上午10:22:31
   * @author 马超伟
   */
  public static String upload(MultipartFile file,String specifiedPath) {
    try {
      String extName = file.getOriginalFilename();
      // 获取文件后缀
      if (extName.lastIndexOf(".") <= 0) {
        throw new RuntimeException("不支持该文件类型");
      }
      extName = extName.substring(extName.lastIndexOf("."));
      String fileName = getFileName();
      // 获取文件名字
      fileName = getFileName() + extName;
      File file2 = new File(specifiedPath);
      if (!file2.exists()) {
        file2.mkdirs();
      }
      file.transferTo(new File(specifiedPath + File.separator+ fileName));
      return fileName;
    } catch (Exception e) {
      throw new RuntimeException(e);
    }
  }
  /**
   * 获取文件名
   * @return
   */
  public static String getFileName() {
    String uuid = UUID.randomUUID().toString();
    uuid = uuid.replace("-", "");
    return uuid.toLowerCase();
  }
  public static String getWebUrl() {
    HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
    return  request.getServletContext().getRealPath("/img");
  }
  public static String getWebProUrl() {
    HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
    return request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() +request.getContextPath();
  }
}
目录
相关文章
|
28天前
|
缓存 Java Spring
Spring 源码阅读 66:基于 JDK 的 AOP 代理如何获取拦截器链(4)- 将 Advice 封装为拦截器
【1月更文挑战第1天】本文分析了 Advice 被封装成 MethodInterceptor 的过程,Spring AOP 用到的五种 Advice 中,有些本身就是 MethodInterceptor 的实现类,而有些需要通过适配器的封装。
49 0
|
6天前
|
Web App开发 前端开发 Java
基于Spring3 MVC实现基于HTML form表单文件上传
基于Spring3 MVC实现基于HTML form表单文件上传
16 7
基于Spring3 MVC实现基于HTML form表单文件上传
|
8天前
|
搜索推荐 前端开发 JavaScript
SpringBoot静态资源访问控制和封装集成方案
该文档描述了对基于SpringBoot的项目框架进行优化和整合的过程。原先采用前后端分离,后端兼做前端,但随着项目增多,升级维护变得复杂。因此,决定整合后台管理页面与后端代码,统一发布。设计上,框架包含后台管理资源,项目则配置具体业务页面,项目可通过覆盖框架资源实现个性化。关键步骤包括:自定义静态资源访问路径、解决图标与字体文件访问问题、设定自定义欢迎页面和页面图标,以及确保项目能正确访问框架静态资源。通过扫描jar包、解压和拷贝资源到项目目录,实现了框架静态资源的动态加载。此外,调整静态资源访问优先级,保证正确加载。最终实现支持jar和war包的项目结构优化。
41 4
|
28天前
|
JSON 前端开发 Java
Springboot前后端分离项目统一封装返回结果
Springboot前后端分离项目统一封装返回结果
|
28天前
|
缓存 NoSQL Java
springboot中集成redis,二次封装成工具类
springboot中集成redis,二次封装成工具类
203 0
|
28天前
|
JSON 前端开发 Java
Spring Boot3统一结果封装
Spring Boot3统一结果封装
53 1
|
28天前
|
开发框架 Java 数据库
|
28天前
|
Java 关系型数据库 MySQL
结合springboot+mybatis-plus+lombok,自定义Page封装类
结合springboot+mybatis-plus+lombok,自定义Page封装类
78 0
|
28天前
|
缓存 小程序 Java
|
28天前
|
JSON 前端开发 Java
SpringBoot - 统一格式封装及高阶全局异常处理
SpringBoot - 统一格式封装及高阶全局异常处理
64 0