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();
  }
}
目录
相关文章
|
26天前
|
Java
springboot将list封装成csv文件
springboot将list封装成csv文件
27 4
|
2月前
|
Java 测试技术 Spring
springboot学习三:Spring Boot 配置文件语法、静态工具类读取配置文件、静态工具类读取配置文件
这篇文章介绍了Spring Boot中配置文件的语法、如何读取配置文件以及如何通过静态工具类读取配置文件。
62 0
springboot学习三:Spring Boot 配置文件语法、静态工具类读取配置文件、静态工具类读取配置文件
|
2月前
|
Java API Spring
springBoot:注解&封装类&异常类&登录实现类 (八)
本文介绍了Spring Boot项目中的一些关键代码片段,包括使用`@PathVariable`绑定路径参数、创建封装类Result和异常处理类GlobalException、定义常量接口Constants、自定义异常ServiceException以及实现用户登录功能。通过这些代码,展示了如何构建RESTful API,处理请求参数,统一返回结果格式,以及全局异常处理等核心功能。
|
4月前
|
缓存 Java 开发者
Spring高手之路22——AOP切面类的封装与解析
本篇文章深入解析了Spring AOP的工作机制,包括Advisor和TargetSource的构建与作用。通过详尽的源码分析和实际案例,帮助开发者全面理解AOP的核心技术,提升在实际项目中的应用能力。
48 0
Spring高手之路22——AOP切面类的封装与解析
|
4月前
|
前端开发 小程序 Java
【规范】SpringBoot接口返回结果及异常统一处理,这样封装才优雅
本文详细介绍了如何在SpringBoot项目中统一处理接口返回结果及全局异常。首先,通过封装`ResponseResult`类,实现了接口返回结果的规范化,包括状态码、状态信息、返回信息和数据等字段,提供了多种成功和失败的返回方法。其次,利用`@RestControllerAdvice`和`@ExceptionHandler`注解配置全局异常处理,捕获并友好地处理各种异常信息。
1393 0
【规范】SpringBoot接口返回结果及异常统一处理,这样封装才优雅
|
4月前
|
JSON 前端开发 Java
SpringBoot3怎么做统一结果封装?
在Spring Boot应用中,统一结果封装有助于团队协作,确保一致的API响应格式,提升代码质量和维护性。主要优点包括:简化前端集成工作,减少后端重复编码,以及增强接口的可维护性。实现上,首先定义`Result`类来封装响应状态码、消息、数据及时间戳;其次,通过`ResultCode`枚举类标准化状态信息。示例代码展示了如何构建这些类,并通过一个简单的控制器方法演示了如何使用它们返回JSON格式的响应结果。
124 2
|
5月前
|
Java Spring
spring restTemplate 进行http请求的工具类封装
spring restTemplate 进行http请求的工具类封装
224 3
|
5月前
|
XML Java API
springboot基础及上传组件封装
springboot基础及上传组件封装
21 0
|
5月前
|
JSON Java fastjson
Spring Boot返回Json数据及数据封装
本文详细介绍了如何在Spring Boot项目中处理JSON数据的传输 Spring Boot默认使用Jackson作为JSON处理器,并通过`spring-boot-starter-web`依赖自动包含相关组件。文章还展示了如何配置Jackson处理null值,使其转换为空字符串。此外,文章比较了Jackson和FastJson的特点,并提供了FastJson的配置示例,展示了如何处理null值以适应不同应用场景。
|
6月前
|
Java
springboot封装RedisTemplate
springboot封装RedisTemplate