1.阿里云oss中间件

This commit is contained in:
wr
2026-01-13 16:21:33 +08:00
parent 27bac7288c
commit c576bd3bf7
3 changed files with 63 additions and 21 deletions

View File

@@ -48,6 +48,21 @@
<artifactId>minioss-springboot-starter</artifactId> <artifactId>minioss-springboot-starter</artifactId>
<version>1.0.0</version> <version>1.0.0</version>
</dependency> </dependency>
<dependency>
<groupId>com.njcn</groupId>
<artifactId>aliyun-oss-springboot-starter</artifactId>
<version>1.0.0</version>
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@@ -13,6 +13,7 @@ public interface GeneralConstant {
Integer LOCAL_DISK = 1; Integer LOCAL_DISK = 1;
Integer HUAWEI_OBS = 2; Integer HUAWEI_OBS = 2;
Integer MINIO_OSS = 3; Integer MINIO_OSS = 3;
Integer AliYUN_OSS = 4;
/*** /***
* 波形文件的3种后缀 * 波形文件的3种后缀

View File

@@ -1,8 +1,8 @@
package com.njcn.oss.utils; package com.njcn.oss.utils;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import cn.hutool.core.lang.UUID;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import com.njcn.ali.oss.util.AliYunOssUtils;
import com.njcn.common.config.GeneralInfo; import com.njcn.common.config.GeneralInfo;
import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.huawei.obs.util.OBSUtil; import com.njcn.huawei.obs.util.OBSUtil;
@@ -13,7 +13,6 @@ import com.njcn.oss.constant.GeneralConstant;
import com.njcn.oss.constant.OssPath; import com.njcn.oss.constant.OssPath;
import com.njcn.oss.enums.OssResponseEnum; import com.njcn.oss.enums.OssResponseEnum;
import io.minio.*; import io.minio.*;
import io.minio.errors.*;
import io.minio.messages.Item; import io.minio.messages.Item;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -66,6 +65,11 @@ public class FileStorageUtil {
private final MinIossProperties minIossProperties; private final MinIossProperties minIossProperties;
/**
* 阿里云文件服务器
*/
private final AliYunOssUtils aliYunOssUtils;
/*** /***
* 上传MultipartFile文件 * 上传MultipartFile文件
@@ -87,11 +91,15 @@ public class FileStorageUtil {
} catch (Exception e) { } catch (Exception e) {
throw new BusinessException(OssResponseEnum.UPLOAD_FILE_ERROR); throw new BusinessException(OssResponseEnum.UPLOAD_FILE_ERROR);
} }
} else if (generalInfo.getBusinessFileStorage() == GeneralConstant.AliYUN_OSS) {
filePath = dir;
aliYunOssUtils.uploadFile(dir, multipartFile);
} else { } else {
try { try {
// 构建完整目录:基准目录 + dir子目录 // 构建完整目录:基准目录 + dir子目录
Path basePath = Paths.get(generalInfo.getLocalStorePath()); Path basePath = Paths.get(generalInfo.getLocalStorePath());
Path uploadPath = basePath.resolve(dir); // 将dir作为子目录添加 // 将dir作为子目录添加
Path uploadPath = basePath.resolve(dir);
// 确保完整目录存在包括dir子目录 // 确保完整目录存在包括dir子目录
if (!Files.exists(uploadPath)) { if (!Files.exists(uploadPath)) {
@@ -135,6 +143,9 @@ public class FileStorageUtil {
if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) { if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) {
filePath = dir + minIoUtils.minFileName(multipartFile.getOriginalFilename()); filePath = dir + minIoUtils.minFileName(multipartFile.getOriginalFilename());
obsUtil.uploadMultipart(multipartFile, filePath); obsUtil.uploadMultipart(multipartFile, filePath);
} else if (generalInfo.getBusinessFileStorage() == GeneralConstant.AliYUN_OSS) {
filePath = dir;
aliYunOssUtils.uploadFile(dir, multipartFile);
} else { } else {
try { try {
//把名称存入数据 //把名称存入数据
@@ -168,6 +179,9 @@ public class FileStorageUtil {
} catch (Exception e) { } catch (Exception e) {
throw new BusinessException(OssResponseEnum.UPLOAD_FILE_ERROR); throw new BusinessException(OssResponseEnum.UPLOAD_FILE_ERROR);
} }
} else if (generalInfo.getBusinessFileStorage() == GeneralConstant.AliYUN_OSS) {
filePath = dir + fileName;
aliYunOssUtils.uploadFile(filePath, inputStream);
} else { } else {
// 本地存储逻辑 // 本地存储逻辑
try { try {
@@ -209,6 +223,9 @@ public class FileStorageUtil {
if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) { if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) {
filePath = dir + minIoUtils.minFileName(fileName); filePath = dir + minIoUtils.minFileName(fileName);
obsUtil.uploadStream(inputStream, filePath); obsUtil.uploadStream(inputStream, filePath);
} else if (generalInfo.getBusinessFileStorage() == GeneralConstant.AliYUN_OSS) {
filePath = dir + fileName;
aliYunOssUtils.uploadFile(filePath, inputStream);
} else { } else {
try { try {
//把名称存入数据 //把名称存入数据
@@ -232,6 +249,8 @@ public class FileStorageUtil {
String url; String url;
if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) { if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) {
url = obsUtil.getFileUrl(filePath); url = obsUtil.getFileUrl(filePath);
} else if (generalInfo.getBusinessFileStorage() == GeneralConstant.AliYUN_OSS) {
url = aliYunOssUtils.generatePresignedUrl(filePath, 3600);
} else { } else {
url = minIoUtils.getObjectUrl(minIossProperties.getBucket(), filePath, 7 * 24 * 60 * 60); url = minIoUtils.getObjectUrl(minIossProperties.getBucket(), filePath, 7 * 24 * 60 * 60);
} }
@@ -252,6 +271,8 @@ public class FileStorageUtil {
inputStream = obsUtil.downloadStream(filePath); inputStream = obsUtil.downloadStream(filePath);
} else if (generalInfo.getBusinessFileStorage() == GeneralConstant.MINIO_OSS) { } else if (generalInfo.getBusinessFileStorage() == GeneralConstant.MINIO_OSS) {
inputStream = minIoUtils.downloadStream(minIossProperties.getBucket(), filePath); inputStream = minIoUtils.downloadStream(minIossProperties.getBucket(), filePath);
} else if (generalInfo.getBusinessFileStorage() == GeneralConstant.AliYUN_OSS) {
inputStream = aliYunOssUtils.downloadStream(filePath);
} else { } else {
Path path = Paths.get(generalInfo.getLocalStorePath() + File.separator + filePath); Path path = Paths.get(generalInfo.getLocalStorePath() + File.separator + filePath);
inputStream = Files.newInputStream(path); inputStream = Files.newInputStream(path);
@@ -276,6 +297,8 @@ public class FileStorageUtil {
inputStream = obsUtil.downloadStream(filePath); inputStream = obsUtil.downloadStream(filePath);
} else if (generalInfo.getBusinessFileStorage() == GeneralConstant.MINIO_OSS) { } else if (generalInfo.getBusinessFileStorage() == GeneralConstant.MINIO_OSS) {
inputStream = minIoUtils.downloadStream(minIossProperties.getBucket(), filePath); inputStream = minIoUtils.downloadStream(minIossProperties.getBucket(), filePath);
} else if (generalInfo.getBusinessFileStorage() == GeneralConstant.AliYUN_OSS) {
inputStream = aliYunOssUtils.downloadStream(filePath);
} else { } else {
// 本地存储处理 // 本地存储处理
Path path = Paths.get(generalInfo.getLocalStorePath() + File.separator + filePath); Path path = Paths.get(generalInfo.getLocalStorePath() + File.separator + filePath);
@@ -333,6 +356,8 @@ public class FileStorageUtil {
obsUtil.delete(fileName); obsUtil.delete(fileName);
} else if (generalInfo.getBusinessFileStorage() == GeneralConstant.MINIO_OSS) { } else if (generalInfo.getBusinessFileStorage() == GeneralConstant.MINIO_OSS) {
minIoUtils.removeObject(minIossProperties.getBucket(), fileName); minIoUtils.removeObject(minIossProperties.getBucket(), fileName);
} else if (generalInfo.getBusinessFileStorage() == GeneralConstant.AliYUN_OSS) {
aliYunOssUtils.deleteFile(fileName);
} else if (generalInfo.getBusinessFileStorage() == GeneralConstant.LOCAL_DISK) { } else if (generalInfo.getBusinessFileStorage() == GeneralConstant.LOCAL_DISK) {
Path path = Paths.get(generalInfo.getLocalStorePath() + File.separator + fileName); Path path = Paths.get(generalInfo.getLocalStorePath() + File.separator + fileName);
try { try {
@@ -411,7 +436,8 @@ public class FileStorageUtil {
FileUtil.writeFromStream(stream, file); FileUtil.writeFromStream(stream, file);
} else if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) { } else if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) {
file = obsUtil.getLastFile(OssPath.LOGBAK); file = obsUtil.getLastFile(OssPath.LOGBAK);
} else if (generalInfo.getBusinessFileStorage() == GeneralConstant.AliYUN_OSS) {
file = aliYunOssUtils.getLastFile(directory);
} }
return file; return file;
} }