SpringBoot文件上传和自定义实体工具

简介: SpringBoot文件上传和自定义实体工具
 
 
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
 
import javax.servlet.http.HttpServletRequest;
 
import org.apache.commons.fileupload.FileUploadException;
import org.springframework.web.multipart.MultipartFile;
 
import com.yuanchuangyun.commons.entity.FileEntity;
 
 
public class UploadFileUtils {
  
  /**
   * uploadFile:(上传单个文件调用方法)
   * TODO(这里描述这个方法适用条件 – 可选)
   * TODO(这里描述这个方法的执行流程 – 可选)
   * TODO(这里描述这个方法的使用方法 – 可选)
   * TODO(这里描述这个方法的注意事项 – 可选)
   *
   * @param  @param request HttpServletRequest
   * @param  @param file MultipartFile文件
   * @param  @param fileBusiness 
   * @param  @param userId
   * @param  @return    设定文件
   * @return FileEntity    DOM对象
   * @throws 
   * @since  CodingExample Ver 1.1
   */
  public static FileEntity uploadFile(HttpServletRequest request,MultipartFile file,String fileBusiness,String userId)throws FileUploadException{
    FileEntity fileEntity = new  FileEntity();
    try {
    //取得当前上传文件的文件名称  
        String myFileName = file.getOriginalFilename();
        //重命名上传后的文件名  
        String suffix = myFileName.substring(myFileName.lastIndexOf("."), myFileName.length());
      String filePath = request.getSession().getServletContext().getRealPath("upload");
      Date nowDate = new Date();
      String businessPuth = File.separator+userId+File.separator+fileBusiness+File.separator;
      String newFileName =nowDate.getTime()+suffix;
      fileEntity.setFilePath(File.separator+"upload"+businessPuth+newFileName);//FileModelServiceImpl.java 同步修改
      fileEntity.setFileName(myFileName);
      fileEntity.setSuffix(suffix);
      File newFile = new File(filePath+businessPuth);
      if(!newFile.exists()){
        newFile.mkdirs();
      }
        //定义上传路径  
        File localFile = new File(filePath+businessPuth+newFileName);  
    file.transferTo(localFile);
    } catch (IllegalStateException e) {
      
      // TODO Auto-generated catch block
      e.printStackTrace();
      throw new FileUploadException("IllegalStateException",e);
      
    } catch (IOException e) {
      
      // TODO Auto-generated catch block
      e.printStackTrace();
      throw new FileUploadException("IOException",e);
    } 
    return fileEntity;
  }
  
  /**
   * uploadFile:(上传多个文件调用方法)
   * TODO(这里描述这个方法适用条件 – 可选)
   * TODO(这里描述这个方法的执行流程 – 可选)
   * TODO(这里描述这个方法的使用方法 – 可选)
   * TODO(这里描述这个方法的注意事项 – 可选)
   *
   * @param  @param request HttpServletRequest
   * @param  @param file MultipartFile文件
   * @param  @param fileBusiness 
   * @param  @param userId
   * @param  @return    设定文件
   * @return FileEntity    DOM对象
   * @throws 
   * @since  CodingExample Ver 1.1
   */
  public static List<FileEntity> uploadFiles(HttpServletRequest request,MultipartFile[] files,String fileBusiness,String userId)throws FileUploadException{
    List<FileEntity> fileEntitys= new ArrayList<FileEntity>();
    try {
      for(MultipartFile file : files){
        FileEntity fileEntity = new  FileEntity();
        //取得当前上传文件的文件名称  
            String myFileName = file.getOriginalFilename();
            //重命名上传后的文件名  
            String suffix = myFileName.substring(myFileName.lastIndexOf("."), myFileName.length());
          String filePath = request.getSession().getServletContext().getRealPath("upload");
          Date nowDate = new Date();
          String businessPuth = File.separator+userId+File.separator+fileBusiness+File.separator;
          String newFileName =nowDate.getTime()+suffix;
          fileEntity.setFilePath(File.separator+"upload"+businessPuth+newFileName);
          fileEntity.setFileName(myFileName);
          fileEntity.setSuffix(suffix);
          File newFile = new File(filePath+businessPuth);
          if(!newFile.exists()){
            newFile.mkdirs();
          }
            //定义上传路径  
            File localFile = new File(filePath+businessPuth+newFileName);  
        file.transferTo(localFile);
        fileEntitys.add(fileEntity);
      }
    } catch (IllegalStateException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      throw new FileUploadException("IllegalStateException",e);
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      throw new FileUploadException("IOException",e);
    } 
    return fileEntitys;
  }
  
  /*
   * 获得上传文件的根目录
   */
  public static String getBaseUploadLocation(HttpServletRequest request){
    return request.getSession().getServletContext().getRealPath(File.separator);
  }
}
 

文件实体封装

 
 
 
public class FileEntity implements java.io.Serializable{
 
  /**
   *
   * @since Ver 1.1
   */
  
  private static final long serialVersionUID = 3835833847440273964L;
  
  /**
   * 文件名称
   */
  private String fileName;
  
  /**
   * 后缀名
   */
  private String suffix;
  
  /**
   * 从 /upload/开始 的绝对路径文件名 
   */
  private String filePath;
 
  public String getFileName() {
    return fileName;
  }
 
  public void setFileName(String fileName) {
    this.fileName = fileName;
  }
 
  public String getSuffix() {
    return suffix;
  }
 
  public void setSuffix(String suffix) {
    this.suffix = suffix;
  }
 
  public String getFilePath() {
    return filePath;
  }
 
  public void setFilePath(String filePath) {
    this.filePath = filePath;
  }
 
}
 


相关文章
|
2月前
|
前端开发 Java Linux
性能工具之 Jmeter 通过 SpringBoot 工程启动
【5月更文挑战第22天】性能工具之 Jmeter 通过 SpringBoot 工程启动
53 8
性能工具之 Jmeter 通过 SpringBoot 工程启动
|
1月前
|
前端开发 Java 程序员
Spring Boot (十五): 优雅的使用 API 文档工具 Swagger2
Spring Boot (十五): 优雅的使用 API 文档工具 Swagger2
|
1月前
|
Java API Spring
集成EasyPoi(一个基于POI的Excel导入导出工具)到Spring Boot项目中
集成EasyPoi(一个基于POI的Excel导入导出工具)到Spring Boot项目中
85 1
|
1月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp微信小程序的小说实体书商城的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的小说实体书商城的详细设计和实现
16 0
|
2月前
|
IDE Java 开发工具
Spring Boot DevTools:加速开发的热部署工具
【4月更文挑战第28天】在Spring Boot的开发过程中,快速反馈和效率至关重要。Spring Boot DevTools是一个为开发者设计的模块,支持热部署(hot swapping),能够实现应用的快速重启和自动重载,极大地提高了开发效率。本篇博客将介绍Spring Boot DevTools的核心概念,并通过具体的实战示例展示如何在开发过程中利用这一工具。
45 0
|
2月前
|
前端开发 Java
SpringBoot之实体参数的详细解析
SpringBoot之实体参数的详细解析
35 0
|
2月前
|
SQL Java 关系型数据库
这款工具让SpringBoot不再需要Controller、Service、DAO、Mapper
这款工具让SpringBoot不再需要Controller、Service、DAO、Mapper
39 1
|
2月前
|
Cloud Native Java 开发者
Spring Boot 4.0:构建云原生Java应用的前沿工具
Spring Boot 4.0:构建云原生Java应用的前沿工具
|
2月前
|
Java API Spring
开源!一款基于Spring Boot的二维码生成和解析工具
开源!一款基于Spring Boot的二维码生成和解析工具
54 1