删除原有图片上传逻辑,使用懒加载策略,在第一次访问预览图时生成。

This commit is contained in:
刘小平 2024-06-14 16:57:41 +08:00
parent 61b08e1240
commit 3d53e62b38
6 changed files with 10 additions and 120 deletions

View File

@ -37,14 +37,6 @@ public interface StorageService {
*/
CompleteResultVo complete(String fileKey, List<String> partMd5List,String userId);
/**
* 上传图片
* @param fileKey 文件KEY
* @param file 文件
* @return 是否成功
*/
Boolean uploadImage(String fileKey, byte[] file);
/**
* 取得文件下载地址
*

View File

@ -21,7 +21,7 @@ public enum MinioPlusErrorCode {
FILE_SUFFIX_GET_FAILED(1004,"无法获取文件的拓展名"),
FILE_BYTES_FAILED(1005,"文件流不能为空"),
FILE_UPLOAD_FAILED(1006,"文件上传失败"),
FILE_PREVIEW_WRITE_FAILED(1007,"缩略图写入失败"),
FILE_PREVIEW_WRITE_FAILED(1007,"缩略图生成失败"),
/**
* MinIO 异常

View File

@ -39,14 +39,6 @@ public interface StorageEngineService {
*/
CompleteResultVo complete(String fileKey, List<String> partMd5List,String userId);
/**
* 上传图片
* @param fileKey 文件KEY
* @param file 文件
* @return 是否成功
*/
Boolean uploadImage(String fileKey, byte[] file);
/**
* 取得文件下载地址
*

View File

@ -282,24 +282,6 @@ public class StorageEngineServiceImpl implements StorageEngineService {
return completeResultVo;
}
if (metadata.getStorageBucket().equals(StorageBucketEnums.IMAGE.getCode())) {
// 图片时生成图片的上传链接
List<FileCheckResultVo.Part> partList = new ArrayList<>();
FileCheckResultVo.Part part = new FileCheckResultVo.Part();
part.setUploadId(metadata.getFileKey());
part.setUrl("/storage/upload/image/" + metadata.getFileKey());
part.setStartPosition(0L);
part.setEndPosition(metadata.getFileSize());
partList.add(part);
completeResultVo.setIsComplete(false);
completeResultVo.setUploadTaskId(metadata.getUploadTaskId());
completeResultVo.setPartList(partList);
return completeResultVo;
}
completeResultVo = this.completeMultipartUpload(metadata, partMd5List);
if (Boolean.TRUE.equals(completeResultVo.getIsComplete())) {
@ -337,40 +319,6 @@ public class StorageEngineServiceImpl implements StorageEngineService {
return completeResultVo;
}
@Override
public Boolean uploadImage(String fileKey, byte[] file) {
FileMetadataInfoDTO searchDto = new FileMetadataInfoDTO();
searchDto.setFileKey(fileKey);
FileMetadataInfoVo metadata = metadataRepository.one(searchDto);
try {
FileMetadataInfoSaveDTO saveDto = new FileMetadataInfoSaveDTO();
saveDto.setStorageBucket(metadata.getStorageBucket());
saveDto.setStoragePath(metadata.getStoragePath());
saveDto.setFileMd5(metadata.getFileMd5());
saveDto.setFileSize(metadata.getFileSize());
saveDto.setFileMimeType(metadata.getFileMimeType());
saveDto.setIsPreview(metadata.getIsPreview());
Boolean isCreateFile = createFile(saveDto, file);
FileMetadataInfoUpdateDTO updateDTO = new FileMetadataInfoUpdateDTO();
updateDTO.setId(metadata.getId());
updateDTO.setIsFinished(Boolean.TRUE);
updateDTO.setUpdateUser(metadata.getUpdateUser());
metadataRepository.update(updateDTO);
return isCreateFile;
} catch (Exception e) {
log.error(MinioPlusErrorCode.FILE_UPLOAD_FAILED.getMessage(), e);
throw new MinioPlusException(MinioPlusErrorCode.FILE_UPLOAD_FAILED);
}
}
@Override
public String download(String fileKey, String userId) {
@ -453,8 +401,8 @@ public class StorageEngineServiceImpl implements StorageEngineService {
} catch (Exception e) {
// 打印日志
log.error(e.getMessage(), e);
// 任何异常统一返回给前端文件不存在
throw new MinioPlusException(MinioPlusErrorCode.FILE_EXIST_FAILED);
// 缩略图生成失败
throw new MinioPlusException(MinioPlusErrorCode.FILE_PREVIEW_WRITE_FAILED);
}
return null;
}
@ -815,19 +763,7 @@ public class StorageEngineServiceImpl implements StorageEngineService {
bucketName = StorageBucketEnums.getBucketByFileSuffix(suffix);
// 创建桶
minioS3Client.makeBucket(bucketName);
// 如果是图片并开启了压缩,不需要分片,返回项目上的接口地址
if (bucketName.equals(StorageBucketEnums.IMAGE.getCode()) && properties.getThumbnail().isEnable()) {
FileCheckResultVo.Part part = new FileCheckResultVo.Part();
// 图片上传时直接使用fileKey作为uploadId
part.setUploadId(fileKey);
part.setUrl("/storage/upload/image/" + fileKey);
part.setStartPosition(0L);
part.setEndPosition(bo.getFileSize());
partList.add(part);
uploadId = fileKey;
} else {
// 创建分片请求,获取uploadId
uploadId = minioS3Client.createMultipartUpload(bucketName, CommonUtil.getObjectName(bo.getFileMd5()));
long start = 0;
@ -838,7 +774,6 @@ public class StorageEngineServiceImpl implements StorageEngineService {
partList.add(part);
}
}
}
CreateUploadUrlRespBO respBO = new CreateUploadUrlRespBO();
// 桶名字
respBO.setBucketName(bucketName);

View File

@ -85,11 +85,6 @@ public class StorageServiceImpl implements StorageService {
return completeResultVo;
}
@Override
public Boolean uploadImage(String fileKey, byte[] file) {
return storageEngineService.uploadImage(fileKey,file);
}
@Override
public String download(String fileKey, String userId) {
return storageEngineService.download(fileKey,userId);

View File

@ -82,30 +82,6 @@ public class StorageController {
return Response.success(completeResultVo);
}
/**
* 图片上传
* @param fileKey 文件KEY
* @param request 文件流
* @return 是否成功
*/
@ApiOperation(value = "图片上传")
@PutMapping("/upload/image/{fileKey}")
@ResponseBody
public Response<Boolean> uploadImage(@PathVariable String fileKey, HttpServletRequest request) {
Boolean isUpload = false;
InputStream inputStream = null;
try {
inputStream = request.getInputStream();
isUpload = storageService.uploadImage(fileKey, IoUtil.readBytes(inputStream));
} catch (IOException e) {
e.printStackTrace();
}finally {
IoUtil.close(inputStream);
}
return Response.success(isUpload);
}
/**
* 文件下载
* @param fileKey 文件KEY