package com.monkeylessey.file.utils;
|
|
import com.monkeylessey.constant.HttpStatusConstants;
|
import com.monkeylessey.enums.FileTypeEnum;
|
import com.monkeylessey.enums.general.FileUploadTypeEnum;
|
import com.monkeylessey.exception.FileFormatNotSupport;
|
import com.monkeylessey.file.domain.entity.FileInfo;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import java.text.SimpleDateFormat;
|
import java.util.Date;
|
import java.util.Random;
|
|
/**
|
* @author 29443
|
* @version 1.0
|
* @date 2022/4/25
|
*/
|
public class FileUtil {
|
|
/**
|
* 获取文件后缀
|
*
|
* @param fileName
|
* @return
|
*/
|
public static String getSuffix(String fileName) {
|
String suffix = fileName.substring(fileName.lastIndexOf('.') + 1);
|
return suffix;
|
}
|
|
/**
|
* 获取该文件上传到oss哪个目录
|
*
|
* @param suffix 文件后缀
|
* @return
|
*/
|
public static String getFileType(String suffix) {
|
String fileType = "";
|
for (FileTypeEnum type : FileTypeEnum.values()) {
|
if (type.getSuffixs().contains(suffix)) {
|
fileType = type.getType();
|
return fileType;
|
}
|
}
|
if (StringUtils.isBlank(fileType)) {
|
throw new FileFormatNotSupport("文件格式" + suffix + "不支持", HttpStatusConstants.ERROR);
|
}
|
return fileType;
|
}
|
|
/**
|
* 获取文件的信息,调用此方法默认普通上传
|
*
|
* @param file
|
* @return
|
*/
|
public static FileInfo getFileInfo(MultipartFile file) {
|
String originalFilename = file.getOriginalFilename();
|
String random = generateFileKey();
|
String suffix = getSuffix(originalFilename);
|
String fileType = getFileType(suffix);
|
String fileKey = String.format("%s/%s.%s", fileType, random, suffix);
|
|
FileInfo fileInfo = new FileInfo();
|
fileInfo.setFileKey(fileKey);
|
fileInfo.setOriginalFilename(originalFilename);
|
fileInfo.setContentType(file.getContentType());
|
fileInfo.setSize(file.getSize());
|
fileInfo.setUploadType(FileUploadTypeEnum.COMMON);
|
|
return fileInfo;
|
}
|
|
/**
|
* 获取文件的信息,传入上传类型
|
*
|
* @param file
|
* @return
|
*/
|
public static FileInfo getFileInfoWithUploadType(MultipartFile file, FileUploadTypeEnum uploadType) {
|
FileInfo fileInfo = getFileInfo(file);
|
fileInfo.setUploadType(uploadType);
|
return fileInfo;
|
}
|
|
/**
|
* 获取fileKey
|
*
|
* @return
|
*/
|
public static String generateFileKey() {
|
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
|
String no = format.format(new Date());
|
Random random = new Random();
|
for (int i = 0; i < 8; i++) {
|
no += random.nextInt(10);
|
}
|
return no;
|
}
|
|
}
|