SpringBoot文件上传和自定义实体工具
2023-09-11 14:16:33 时间
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;
}
}
相关文章
- SpringBoot 之jsp
- SpringBoot文件上传大小设置(yml中配置)
- 补习系列(15)-springboot 分布式会话原理
- Springboot整合Elasticsearch报错availableProcessors is already set to [4], rejecting [4]
- SpringBoot ( 七 ) :springboot + mybatis 多数据源最简解决方案
- Spring、SpringMVC和Springboot的区别(网摘)
- Springboot dubbo @Service @Transactional 无法提供服务或者无法提供事务的解决办法
- Redis---整合SpringBoot篇
- Atitit java解析yml文件 以及使用 spel ognl 读取 v4 u77.docx Atitit java解析yml文件 目录 1.1. Springboot use snak
- 【SpringBoot笔记12】SpringBoot框架实现文件上传和文件下载
- Springboot+WebUploader优雅实现超大文件的上传(一)
- Springboot怎么快速集成Redis?
- 【SpringBoot系列】最详细demo-- 使用AOP
- 【SpringBoot3】SpringBoot中实现全局统一异常处理
- 【已解决详细demo】Springboot 一行代码实现文件上传 20个平台!少写代码到极致
- 补习系列(11)-springboot 文件上传原理
- 补习系列(17)-springboot mongodb 内嵌数据库
- SpringBoot 异常回滚 事务的使用___Springboot @Transactional 事务不回滚
- OkHttp协议介绍以及文件下载和上传+OkHttp协议封装+OkHttp拦截器____SpringBoot——集成Okhttp3
- 基于注解SpringAOP,AfterReturning,Before,Around__springboot工程 @Around 简单的使用__SpringBoot:AOP 自定义注解实现日志管理
- SpringBoot升级到2.0后默认时间格式变化_springboot接收date类型参数
- SpringBoot整合Kafka消息组件
- 使用Maven创建Springboot的父子工程
- SpringBoot访问静态资源文件(css、js、images)
- Springboot+WebUploader优雅实现超大文件的上传(一)
- Springboot扩展点之ApplicationContextInitializer