package com.gouyan.common.file;
import com.gouyan.common.utils.StringUtil;
import com.gouyan.common.exception.FileNameLengthLimitExceededException;
import com.gouyan.common.exception.FileSizeLimitExceededException;
import com.gouyan.common.exception.InvalidExtensionException;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.springframework.util.ClassUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.UUID;
/**
* 文件上传工具类
*/
public class FileUploadUtils
{
/**
* 默认大小 50M
*/
public static final long DEFAULT_MAX_SIZE = 50 * 1024 * 1024;
/**
* 默认的文件名最大长度 100
*/
public static final int DEFAULT_FILE_NAME_LENGTH = 100;
/**
* 默认存储图片目录
*/
private static final String parentPath = ClassUtils.getDefaultClassLoader().getResource("static/images").getPath();
public static final String actorPath = "/actor";
public static final String cinemaPath = "/cinema";
public static final String moviePath = "/movie";
public static final String userPath = "/user";
/**
* 默认上传的地址
*/
private static String defaultBaseDir = userPath;
public static void setDefaultBaseDir(String defaultBaseDir)
{
FileUploadUtils.defaultBaseDir = defaultBaseDir;
}
public static String getDefaultBaseDir()
{
return defaultBaseDir;
}
public static String getParentPath() {
return parentPath;
}
/**
* 以默认配置进行文件上传
*
* @param file 上传的文件
* @return 文件名称
* @throws Exception
*/
public static final String upload(MultipartFile file) throws IOException
{
try
{
return upload(getParentPath() + getDefaultBaseDir(), file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION);
}
catch (Exception e)
{
throw new IOException(e.getMessage(), e);
}
}
/**
* 文件上传
*
* @param baseDir 相对应用的基目录
* @param file 上传的文件
* @param allowedExtension 上传文件类型
* @return 返回上传成功的文件名
* @throws FileSizeLimitExceededException 如果超出最大大小
* @throws FileNameLengthLimitExceededException 文件名太长
* @throws IOException 比如读写文件出错时
* @throws InvalidExtensionException 文件校验异常
*/
public static final String upload(String baseDir, MultipartFile file, String[] allowedExtension)
throws FileSizeLimitExceededException, IOException, FileNameLengthLimitExceededException,
InvalidExtensionException
{
int fileNamelength = file.getOriginalFilename().length();
if (fileNamelength > FileUploadUtils.DEFAULT_FILE_NAME_LENGTH)
{
throw new FileNameLengthLimitExceededException("文件名称长度不能超过" + FileUploadUtils.DEFAULT_FILE_NAME_LENGTH);
}
assertAllowed(file, allowedExtension);
String fileName = extractFilename(file);
File desc = getAbsoluteFile(baseDir, fileName);
file.transferTo(desc);
String pathFileName = getPathFileName(baseDir, fileName);
return pathFileName;
}
/**
* 编码文件名 如 : images/user/2020/12/4/***.png
*/
public static final String extractFilename(MultipartFile file)
{
String fileName = file.getOriginalFilename();
String extension = getExtension(file);
fileName = DateFormatUtils.format(new Date(), "yyyy/MM/dd") + "/" + UUID.randomUUID().toString().replaceAll("-","") + "." + extension;
return fileName;
}
private static final File getAbsoluteFile(String uploadDir, String fileName) throws IOException
{
File desc = new File(uploadDir + File.separator + fileName);
if (!desc.getParentFile().exists())
{
desc.getParentFile().mkdirs();
}
if (!desc.exists())
{
desc.createNewFile();
}
return desc;
}
private static final String getPathFileName(String uploadDir, String fileName) throws IOException
{
int dirLastIndex = parentPath.length() + 1;
String currentDir = StringUtils.substring(uploadDir, dirLastIndex);
String pathFileName = "/images/" + currentDir + "/" + fileName;
return pathFileName;
}
/**
* 文件大小校验
*
* @param file 上传的文件
* @return
* @throws FileSizeLimitExceededException 如果超出最大大小
* @throws InvalidExtensionException
*/
public static final void assertAllowed(MultipartFile file, String[] allowedExtension)
throws FileSizeLimitExceededException, InvalidExtensionException
{
long size = file.getSize();
if (DEFAULT_MAX_SIZE != -1 && size > DEFAULT_MAX_SIZE)
{
throw new FileSizeLimitExceededException("文件大小不能超过" + DEFAULT_MAX_SIZE / 1024 / 1024 + "MB");
}
String fileName = file.getOriginalFilename();
String extension = getExtension(file);
if (allowedExtension != null && !isAllowedExtension(extension, allowedExtension))
{
if (allowedExtension == MimeTypeUtils.IMAGE_EXTENSION)
{
throw new InvalidExtensionException("图片格式不支持" + extension + "格式");
}
}
}
/**
* 判断MIME类型是否是允许的MIME类型
*
* @param extension
* @param allowedExtension
* @return
*/
public static final boolean isAllowedExtension(String extension, String[] allowedExtension)
{
for (String str : allowedExtension)
{
if (str.equalsIgnoreCase(extension))
{
return true;
}
}
return false;
}
/**
* 获取文件名的后缀
*
* @param file 表单文件
* @return 后缀名
*/
public static final String getExtension(MultipartFile file)
{
String extension = FilenameUtils.getExtension(file.getOriginalFilename());
if (!StringUtil.isNotEmpty(extension))
{
extension = MimeTypeUtils.getExtension(file.getContentType());
}
return extension;
}
/**
* 删除文件
*
* @param filePath 文件
* @return
*/
public static boolean deleteFile(String filePath)
{
boolean flag = false;
File file = new File(filePath);
// 路径为文件且不为空则进行删除
if (file.isFile() && file.exists())
{
file.delete();
flag = true;
}
return flag;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
基于SpringBoot和Vue的狗眼电影在线售票系统设计源码
共434个文件
java:139个
jpg:102个
vue:62个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 140 浏览量
2024-04-05
17:30:46
上传
评论
收藏 25.83MB ZIP 举报
温馨提示
本资源提供了一套基于SpringBoot和Vue的狗眼电影在线售票系统的设计源码,包含436个文件,其中包括139个Java源代码文件,102个JPEG图片文件,62个Vue组件文件,以及27个XML配置文件。此外,还包括23个JavaScript脚本文件,21个HTTP文件,14个PNG图片文件,12个SVG矢量文件,以及7个Git忽略文件和4个JSON配置文件。这些文件详细展示了如何使用SpringBoot、Vue、JavaScript、CSS和HTML构建一个在线售票系统,非常适合用于学习和参考Java项目的开发。
资源推荐
资源详情
资源评论
收起资源包目录
基于SpringBoot和Vue的狗眼电影在线售票系统设计源码 (434个子文件)
.browserslistrc 30B
.browserslistrc 30B
iconfont.css 2KB
iconfont.css 2KB
global.css 537B
global.css 90B
iconfont.eot 2KB
iconfont.eot 2KB
.gitignore 395B
.gitignore 395B
.gitignore 395B
.gitignore 395B
.gitignore 395B
.gitignore 231B
.gitignore 231B
index.html 613B
index.html 613B
SysUserController.http 1KB
SysActorController.http 1KB
SysCinemaController.http 1KB
SysSessionController.http 1023B
SysMovieCommentController.http 927B
SysMovieController.http 868B
SysHallController.http 834B
SysBillController.http 750B
SysResourceController.http 714B
SysMovieRuntimeController.http 647B
SysRoleController.http 621B
SysCinemaAreaController.http 608B
SysUserHobbyController.http 525B
SysMovieCategoryController.http 524B
SysHallCategoryController.http 520B
SysMovieAgeController.http 515B
SysCinemaBrandController.http 511B
SysActorRoleController.http 509B
SysMovieAreaController.http 490B
SysMovieToCategoryController.http 461B
SysActorMovieController.http 426B
favicon.ico 4KB
favicon.ico 4KB
FileUploadUtils.java 7KB
SysMovieCommentController.java 4KB
SysUserServiceImpl.java 4KB
SysBillController.java 3KB
GlobalExceptionHandler.java 3KB
SysHallController.java 3KB
ShiroConfig.java 3KB
FileUploadController.java 3KB
CustomerRealm.java 3KB
JwtFilter.java 3KB
JwtUtil.java 3KB
SysCinemaController.java 2KB
SysMovieServiceImpl.java 2KB
SysMovieController.java 2KB
ResponseResult.java 2KB
SysUserController.java 2KB
SysSession.java 2KB
SysResourceServiceImpl.java 2KB
SysMovieMapper.java 2KB
SysMovie.java 2KB
SysHall.java 2KB
SysResourceController.java 2KB
SysRoleController.java 2KB
SysMovieAgeController.java 2KB
SysSessionController.java 2KB
SysMovieAreaController.java 2KB
SysActorController.java 2KB
SysMovieCategoryController.java 2KB
BaseController.java 2KB
SysRoleServiceImpl.java 2KB
SysHallCategoryController.java 2KB
SysMovieRuntimeController.java 2KB
SysActor.java 2KB
SysMovieCommentServiceImpl.java 2KB
SysCinemaAreaController.java 2KB
SysActorRoleController.java 2KB
SysCinema.java 2KB
SysUserHobbyController.java 2KB
SysCinemaBrandController.java 2KB
SysSessionServiceImpl.java 1KB
SysMovieToCategoryController.java 1KB
PageBuilder.java 1KB
SysCinemaServiceImpl.java 1KB
SysActorMovieController.java 1KB
Page.java 1KB
SysUser.java 1KB
SysBillServiceImpl.java 1KB
SysMovieCategoryServiceImpl.java 1KB
SysMovieRuntimeServiceImpl.java 1KB
SysActorServiceImpl.java 1KB
SysHallCategoryServiceImpl.java 1KB
SysCinemaBrandServiceImpl.java 1KB
SysCinemaAreaServiceImpl.java 1KB
SysHallServiceImpl.java 1KB
SysUserHobbyServiceImpl.java 1KB
SysMovieCommentMapper.java 1KB
SysActorRoleServiceImpl.java 1KB
SysMovieAreaServiceImpl.java 1KB
ServletUtil.java 1KB
SysMovieAgeServiceImpl.java 1KB
共 434 条
- 1
- 2
- 3
- 4
- 5
资源评论
沐知全栈开发
- 粉丝: 4777
- 资源: 4037
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功