社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
一.文件重复判断(文件名和后缀判断):
/**
* 获取文件夹中相同文件名的文件个数
*
* @param filePath
* @param fileName
* @return
*/
private int getFileMax(String filePath, String fileName) {
File file = new File(filePath);
File[] files;
int number = 0;
if (file.isDirectory()) {
files = file.listFiles();
for (int i = 0; i < files.length; i++) {
File f = files[i];
if (f.isFile()
&& (f.getName().substring(0, f.getName().lastIndexOf("."))
.contains(fileName.substring(0, fileName.lastIndexOf(".")))
&& f.getName().substring(f.getName().lastIndexOf("."))
.equals(fileName.substring(fileName.lastIndexOf("."))))) {
number = number + 1;
}
}
}
return number;
}
二、文件上传
/**
* 上传文件
*
* @return
*/
@Override
public ServiceResult<FileInfoAO> uploadFile(MultipartFile file) throws Exception {
// 获取文件名
String fileName = file.getOriginalFilename();
//使用System.getProperty("user.dir")获取当前程序运行的工作根目录
String uploadFilePath = System.getProperty("user.dir") + File.separator + "upload" + File.separator;
File dest = new File(uploadFilePath);
// 检测是否存在目录
if (!dest.exists()) {
dest.mkdirs();
}
//文件重命名,防止覆盖
int fileMax = getFileMax(uploadFilePath, fileName);
StringBuilder destFilePath = new StringBuilder();
if (fileMax > 0) {
destFilePath.append(uploadFilePath).append(fileName.substring(0, fileName.lastIndexOf("."))).
append("(" + fileMax + ")").append(fileName.substring(fileName.lastIndexOf(".")));
} else {
destFilePath.append(uploadFilePath).append(fileName);
}
File destFile = new File(destFilePath.toString());
file.transferTo(destFile);
FileInfoAO fileInfoAO = new FileInfoAO();
fileInfoAO.setCreateTime(DateTimeUtil.formatDateTime(new Date()));
fileInfoAO.setFileName(fileName);
fileInfoAO.setFilePath(destFile.getAbsolutePath());
fileInfoAO.setFileType(StringUtils.substringAfter(fileName, "."));// 获取文件的扩展名
UserAO user = AuthUtil.getCurrentUser();
fileInfoAO.setPulisher(user != null ? user.getUserName() : null);
insert(fileInfoAO);
return ServiceResultHelper.genResultWithSuccess(fileInfoAO);
}
三、测试
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!