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();
  }
}
目录
相关文章
|
2月前
|
缓存 Java 开发者
Spring高手之路22——AOP切面类的封装与解析
本篇文章深入解析了Spring AOP的工作机制,包括Advisor和TargetSource的构建与作用。通过详尽的源码分析和实际案例,帮助开发者全面理解AOP的核心技术,提升在实际项目中的应用能力。
23 0
Spring高手之路22——AOP切面类的封装与解析
|
2月前
|
前端开发 小程序 Java
【规范】SpringBoot接口返回结果及异常统一处理,这样封装才优雅
本文详细介绍了如何在SpringBoot项目中统一处理接口返回结果及全局异常。首先,通过封装`ResponseResult`类,实现了接口返回结果的规范化,包括状态码、状态信息、返回信息和数据等字段,提供了多种成功和失败的返回方法。其次,利用`@RestControllerAdvice`和`@ExceptionHandler`注解配置全局异常处理,捕获并友好地处理各种异常信息。
245 0
【规范】SpringBoot接口返回结果及异常统一处理,这样封装才优雅
|
2月前
|
JSON 前端开发 Java
SpringBoot3怎么做统一结果封装?
在Spring Boot应用中,统一结果封装有助于团队协作,确保一致的API响应格式,提升代码质量和维护性。主要优点包括:简化前端集成工作,减少后端重复编码,以及增强接口的可维护性。实现上,首先定义`Result`类来封装响应状态码、消息、数据及时间戳;其次,通过`ResultCode`枚举类标准化状态信息。示例代码展示了如何构建这些类,并通过一个简单的控制器方法演示了如何使用它们返回JSON格式的响应结果。
|
3月前
|
Java Spring
spring restTemplate 进行http请求的工具类封装
spring restTemplate 进行http请求的工具类封装
106 3
|
4月前
|
Web App开发 前端开发 Java
基于Spring3 MVC实现基于HTML form表单文件上传
基于Spring3 MVC实现基于HTML form表单文件上传
42 7
基于Spring3 MVC实现基于HTML form表单文件上传
|
3月前
|
XML Java API
springboot基础及上传组件封装
springboot基础及上传组件封装
17 0
|
3月前
|
JSON Java fastjson
Spring Boot返回Json数据及数据封装
本文详细介绍了如何在Spring Boot项目中处理JSON数据的传输 Spring Boot默认使用Jackson作为JSON处理器,并通过`spring-boot-starter-web`依赖自动包含相关组件。文章还展示了如何配置Jackson处理null值,使其转换为空字符串。此外,文章比较了Jackson和FastJson的特点,并提供了FastJson的配置示例,展示了如何处理null值以适应不同应用场景。
|
4月前
|
Java
springboot封装RedisTemplate
springboot封装RedisTemplate
|
4月前
|
搜索推荐 前端开发 JavaScript
SpringBoot静态资源访问控制和封装集成方案
该文档描述了对基于SpringBoot的项目框架进行优化和整合的过程。原先采用前后端分离,后端兼做前端,但随着项目增多,升级维护变得复杂。因此,决定整合后台管理页面与后端代码,统一发布。设计上,框架包含后台管理资源,项目则配置具体业务页面,项目可通过覆盖框架资源实现个性化。关键步骤包括:自定义静态资源访问路径、解决图标与字体文件访问问题、设定自定义欢迎页面和页面图标,以及确保项目能正确访问框架静态资源。通过扫描jar包、解压和拷贝资源到项目目录,实现了框架静态资源的动态加载。此外,调整静态资源访问优先级,保证正确加载。最终实现支持jar和war包的项目结构优化。
95 4
|
4月前
|
Java Spring
Spring实现文件上传,文件上传
Spring实现文件上传,文件上传
下一篇
无影云桌面