refactor(storage): 重构本地存储服务的文件上传功能
This commit is contained in:
+15
-3
@@ -23,11 +23,15 @@ import static cn.odboy.constant.SystemConst.SYMBOL_SUBTRACT;
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.core.io.IoUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.poi.excel.BigExcelWriter;
|
||||
import cn.hutool.poi.excel.ExcelUtil;
|
||||
import cn.odboy.constant.FileTypeEnum;
|
||||
import cn.odboy.constant.SystemConst;
|
||||
import cn.odboy.framework.exception.BadRequestException;
|
||||
import jakarta.servlet.ServletOutputStream;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
@@ -42,9 +46,6 @@ import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
import jakarta.servlet.ServletOutputStream;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import lombok.experimental.UtilityClass;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.poi.util.IOUtils;
|
||||
@@ -386,4 +387,15 @@ public final class KitFileUtil extends FileUtil {
|
||||
public static String getMd5(File file) {
|
||||
return getMd5(getByte(file));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取文件名前缀
|
||||
*
|
||||
* @param originalFilename 原始文件名
|
||||
* @param firstName 首选文件名,如果不为空,则返回
|
||||
* @return /
|
||||
*/
|
||||
public static String getPrefix(String originalFilename, String firstName) {
|
||||
return StrUtil.isBlank(firstName) ? getPrefix(originalFilename) : firstName;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@ import static cn.odboy.constant.SystemConst.SYMBOL_SUBTRACT;
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.core.io.IoUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.poi.excel.BigExcelWriter;
|
||||
import cn.hutool.poi.excel.ExcelUtil;
|
||||
import cn.odboy.constant.FileTypeEnum;
|
||||
@@ -386,4 +387,15 @@ public final class KitFileUtil extends FileUtil {
|
||||
public static String getMd5(File file) {
|
||||
return getMd5(getByte(file));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取文件名前缀
|
||||
*
|
||||
* @param originalFilename 原始文件名
|
||||
* @param firstName 首选文件名,如果不为空,则返回
|
||||
* @return /
|
||||
*/
|
||||
public static String getPrefix(String originalFilename, String firstName) {
|
||||
return StrUtil.isBlank(firstName) ? getPrefix(originalFilename) : firstName;
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -74,7 +74,7 @@ public class SystemLocalStorageController {
|
||||
@ApiOperation("上传图片")
|
||||
@PostMapping("/uploadPicture")
|
||||
public ResponseEntity<SystemLocalStorageTb> uploadPicture(@RequestParam MultipartFile file) {
|
||||
SystemLocalStorageTb localStorage = localStorageService.uploadPictureV1(file);
|
||||
SystemLocalStorageTb localStorage = localStorageService.uploadPicture(file);
|
||||
return ResponseEntity.ok(localStorage);
|
||||
}
|
||||
|
||||
|
||||
-5
@@ -16,7 +16,6 @@
|
||||
package cn.odboy.system.dal.dataobject;
|
||||
|
||||
import cn.odboy.base.KitBaseUserTimeTb;
|
||||
import cn.odboy.util.KitBeanUtil;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
@@ -46,8 +45,4 @@ public class SystemLocalStorageTb extends KitBaseUserTimeTb {
|
||||
private String size;
|
||||
@ApiModelProperty(value = "日期分组")
|
||||
private String dateGroup;
|
||||
|
||||
public void copy(SystemLocalStorageTb source) {
|
||||
KitBeanUtil.copyToTarget(source, this);
|
||||
}
|
||||
}
|
||||
+18
-8
@@ -22,7 +22,6 @@ import cn.hutool.core.io.IORuntimeException;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.odboy.base.KitPageResult;
|
||||
import cn.odboy.constant.FileTypeEnum;
|
||||
import cn.odboy.framework.context.KitSpringBeanHolder;
|
||||
import cn.odboy.framework.exception.BadRequestException;
|
||||
import cn.odboy.framework.properties.AppProperties;
|
||||
import cn.odboy.framework.server.core.KitFileLocalUploadHelper;
|
||||
@@ -40,11 +39,14 @@ import java.io.File;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
public class SystemLocalStorageService {
|
||||
|
||||
@@ -54,6 +56,9 @@ public class SystemLocalStorageService {
|
||||
private KitFileLocalUploadHelper fileUploadPathHelper;
|
||||
@Autowired
|
||||
private AppProperties properties;
|
||||
@Lazy
|
||||
@Autowired
|
||||
private SystemLocalStorageService localStorageService;
|
||||
|
||||
/**
|
||||
* 上传 -> TestPassed
|
||||
@@ -75,8 +80,7 @@ public class SystemLocalStorageService {
|
||||
}
|
||||
try {
|
||||
String formatSize = KitFileUtil.getSize(size);
|
||||
String prefixName =
|
||||
StrUtil.isBlank(name) ? KitFileUtil.getPrefix(multipartFile.getOriginalFilename()) : name;
|
||||
String prefixName = KitFileUtil.getPrefix(multipartFile.getOriginalFilename(), name);
|
||||
SystemLocalStorageTb localStorage = new SystemLocalStorageTb();
|
||||
localStorage.setRealName(file.getName());
|
||||
localStorage.setName(prefixName);
|
||||
@@ -88,6 +92,7 @@ public class SystemLocalStorageService {
|
||||
systemLocalStorageMapper.insert(localStorage);
|
||||
return localStorage;
|
||||
} catch (Exception e) {
|
||||
log.error("上传文件失败", e);
|
||||
KitFileUtil.del(file);
|
||||
throw e;
|
||||
}
|
||||
@@ -100,9 +105,7 @@ public class SystemLocalStorageService {
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateLocalStorageById(SystemLocalStorageTb args) {
|
||||
SystemLocalStorageTb localStorage = systemLocalStorageMapper.selectById(args.getId());
|
||||
localStorage.copy(args);
|
||||
systemLocalStorageMapper.insertOrUpdate(localStorage);
|
||||
systemLocalStorageMapper.updateById(args);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -159,15 +162,22 @@ public class SystemLocalStorageService {
|
||||
return systemLocalStorageMapper.selectList(wrapper);
|
||||
}
|
||||
|
||||
public SystemLocalStorageTb uploadPictureV1(MultipartFile file) {
|
||||
/**
|
||||
* 上传图片
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public SystemLocalStorageTb uploadPicture(MultipartFile file) {
|
||||
// 判断文件是否为图片
|
||||
String suffix = KitFileUtil.getSuffix(file.getOriginalFilename());
|
||||
if (!FileTypeEnum.IMAGE.getCode().equals(KitFileUtil.getFileType(suffix))) {
|
||||
throw new BadRequestException("只能上传图片");
|
||||
}
|
||||
return KitSpringBeanHolder.getBean(SystemLocalStorageService.class).uploadFile(null, file);
|
||||
return localStorageService.uploadFile(null, file);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出文件上传记录
|
||||
*/
|
||||
public void exportLocalStorageXlsx(HttpServletResponse response, SystemQueryStorageArgs args) {
|
||||
List<SystemLocalStorageTb> systemLocalStorageTbs = this.queryLocalStorageByArgs(args);
|
||||
List<SystemLocalStorageExportRowVo> rowVos =
|
||||
|
||||
Reference in New Issue
Block a user