From c576bd3bf7f7d28caf7d66d3682790a94efe5f68 Mon Sep 17 00:00:00 2001
From: wr <1754607820@qq.com>
Date: Tue, 13 Jan 2026 16:21:33 +0800
Subject: [PATCH] =?UTF-8?q?1.=E9=98=BF=E9=87=8C=E4=BA=91oss=E4=B8=AD?=
=?UTF-8?q?=E9=97=B4=E4=BB=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pqs-common/common-oss/pom.xml | 15 ++++
.../njcn/oss/constant/GeneralConstant.java | 1 +
.../com/njcn/oss/utils/FileStorageUtil.java | 68 +++++++++++++------
3 files changed, 63 insertions(+), 21 deletions(-)
diff --git a/pqs-common/common-oss/pom.xml b/pqs-common/common-oss/pom.xml
index 7ccd85af5..c31b7a36f 100644
--- a/pqs-common/common-oss/pom.xml
+++ b/pqs-common/common-oss/pom.xml
@@ -48,6 +48,21 @@
minioss-springboot-starter
1.0.0
+
+ com.njcn
+ aliyun-oss-springboot-starter
+ 1.0.0
+
+
+ org.apache.logging.log4j
+ log4j-core
+
+
+ org.apache.logging.log4j
+ log4j-api
+
+
+
\ No newline at end of file
diff --git a/pqs-common/common-oss/src/main/java/com/njcn/oss/constant/GeneralConstant.java b/pqs-common/common-oss/src/main/java/com/njcn/oss/constant/GeneralConstant.java
index a4b58c7c8..2568deb4d 100644
--- a/pqs-common/common-oss/src/main/java/com/njcn/oss/constant/GeneralConstant.java
+++ b/pqs-common/common-oss/src/main/java/com/njcn/oss/constant/GeneralConstant.java
@@ -13,6 +13,7 @@ public interface GeneralConstant {
Integer LOCAL_DISK = 1;
Integer HUAWEI_OBS = 2;
Integer MINIO_OSS = 3;
+ Integer AliYUN_OSS = 4;
/***
* 波形文件的3种后缀
diff --git a/pqs-common/common-oss/src/main/java/com/njcn/oss/utils/FileStorageUtil.java b/pqs-common/common-oss/src/main/java/com/njcn/oss/utils/FileStorageUtil.java
index d999cbf58..c68d55105 100644
--- a/pqs-common/common-oss/src/main/java/com/njcn/oss/utils/FileStorageUtil.java
+++ b/pqs-common/common-oss/src/main/java/com/njcn/oss/utils/FileStorageUtil.java
@@ -1,8 +1,8 @@
package com.njcn.oss.utils;
import cn.hutool.core.io.FileUtil;
-import cn.hutool.core.lang.UUID;
import cn.hutool.core.util.IdUtil;
+import com.njcn.ali.oss.util.AliYunOssUtils;
import com.njcn.common.config.GeneralInfo;
import com.njcn.common.pojo.exception.BusinessException;
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.enums.OssResponseEnum;
import io.minio.*;
-import io.minio.errors.*;
import io.minio.messages.Item;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -66,6 +65,11 @@ public class FileStorageUtil {
private final MinIossProperties minIossProperties;
+ /**
+ * 阿里云文件服务器
+ */
+ private final AliYunOssUtils aliYunOssUtils;
+
/***
* 上传MultipartFile文件,
@@ -79,7 +83,7 @@ public class FileStorageUtil {
if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) {
filePath = dir + minIoUtils.minFileName(multipartFile.getOriginalFilename());
obsUtil.uploadMultipart(multipartFile, filePath);
- } else if(generalInfo.getBusinessFileStorage() == GeneralConstant.MINIO_OSS){
+ } else if (generalInfo.getBusinessFileStorage() == GeneralConstant.MINIO_OSS) {
try {
//把名称存入数据
MinIoUploadResDTO minIoUploadResDTO = minIoUtils.upload(multipartFile, minIossProperties.getBucket(), dir);
@@ -87,11 +91,15 @@ public class FileStorageUtil {
} catch (Exception e) {
throw new BusinessException(OssResponseEnum.UPLOAD_FILE_ERROR);
}
- }else {
+ } else if (generalInfo.getBusinessFileStorage() == GeneralConstant.AliYUN_OSS) {
+ filePath = dir;
+ aliYunOssUtils.uploadFile(dir, multipartFile);
+ } else {
try {
// 构建完整目录:基准目录 + dir子目录
Path basePath = Paths.get(generalInfo.getLocalStorePath());
- Path uploadPath = basePath.resolve(dir); // 将dir作为子目录添加
+ // 将dir作为子目录添加
+ Path uploadPath = basePath.resolve(dir);
// 确保完整目录存在(包括dir子目录)
if (!Files.exists(uploadPath)) {
@@ -135,6 +143,9 @@ public class FileStorageUtil {
if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) {
filePath = dir + minIoUtils.minFileName(multipartFile.getOriginalFilename());
obsUtil.uploadMultipart(multipartFile, filePath);
+ } else if (generalInfo.getBusinessFileStorage() == GeneralConstant.AliYUN_OSS) {
+ filePath = dir;
+ aliYunOssUtils.uploadFile(dir, multipartFile);
} else {
try {
//把名称存入数据
@@ -160,7 +171,7 @@ public class FileStorageUtil {
if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) {
filePath = dir + minIoUtils.minFileName(fileName);
obsUtil.uploadStream(inputStream, filePath);
- } else if (generalInfo.getBusinessFileStorage() == GeneralConstant.MINIO_OSS){
+ } else if (generalInfo.getBusinessFileStorage() == GeneralConstant.MINIO_OSS) {
try {
//把名称存入数据
MinIoUploadResDTO minIoUploadResDTO = minIoUtils.uploadStream(inputStream, minIossProperties.getBucket(), dir, minIoUtils.minFileName(fileName));
@@ -168,14 +179,17 @@ public class FileStorageUtil {
} catch (Exception e) {
throw new BusinessException(OssResponseEnum.UPLOAD_FILE_ERROR);
}
- }else {
+ } else if (generalInfo.getBusinessFileStorage() == GeneralConstant.AliYUN_OSS) {
+ filePath = dir + fileName;
+ aliYunOssUtils.uploadFile(filePath, inputStream);
+ } else {
// 本地存储逻辑
try {
// 1. 获取本地存储路径
String localStoragePath = generalInfo.getLocalStorePath();
// 2. 确保目录存在(如果不存在则创建)
- File targetDir = new File(localStoragePath +File.separator+ dir);
+ File targetDir = new File(localStoragePath + File.separator + dir);
if (!targetDir.exists()) {
boolean created = targetDir.mkdirs();
if (!created) {
@@ -193,7 +207,7 @@ public class FileStorageUtil {
// 5. 返回相对路径
filePath = dir + finalFileName;
} catch (IOException e) {
- throw new BusinessException(OssResponseEnum.UPLOAD_FILE_ERROR,e.getMessage());
+ throw new BusinessException(OssResponseEnum.UPLOAD_FILE_ERROR, e.getMessage());
}
}
return filePath;
@@ -209,6 +223,9 @@ public class FileStorageUtil {
if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) {
filePath = dir + minIoUtils.minFileName(fileName);
obsUtil.uploadStream(inputStream, filePath);
+ } else if (generalInfo.getBusinessFileStorage() == GeneralConstant.AliYUN_OSS) {
+ filePath = dir + fileName;
+ aliYunOssUtils.uploadFile(filePath, inputStream);
} else {
try {
//把名称存入数据
@@ -232,6 +249,8 @@ public class FileStorageUtil {
String url;
if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) {
url = obsUtil.getFileUrl(filePath);
+ } else if (generalInfo.getBusinessFileStorage() == GeneralConstant.AliYUN_OSS) {
+ url = aliYunOssUtils.generatePresignedUrl(filePath, 3600);
} else {
url = minIoUtils.getObjectUrl(minIossProperties.getBucket(), filePath, 7 * 24 * 60 * 60);
}
@@ -250,10 +269,12 @@ public class FileStorageUtil {
try {
if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) {
inputStream = obsUtil.downloadStream(filePath);
- } else if(generalInfo.getBusinessFileStorage() == GeneralConstant.MINIO_OSS) {
+ } else if (generalInfo.getBusinessFileStorage() == GeneralConstant.MINIO_OSS) {
inputStream = minIoUtils.downloadStream(minIossProperties.getBucket(), filePath);
- }else {
- Path path = Paths.get(generalInfo.getLocalStorePath()+File.separator+filePath);
+ } else if (generalInfo.getBusinessFileStorage() == GeneralConstant.AliYUN_OSS) {
+ inputStream = aliYunOssUtils.downloadStream(filePath);
+ } else {
+ Path path = Paths.get(generalInfo.getLocalStorePath() + File.separator + filePath);
inputStream = Files.newInputStream(path);
}
} catch (Exception exception) {
@@ -274,11 +295,13 @@ public class FileStorageUtil {
try {
if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) {
inputStream = obsUtil.downloadStream(filePath);
- } else if(generalInfo.getBusinessFileStorage() == GeneralConstant.MINIO_OSS){
+ } else if (generalInfo.getBusinessFileStorage() == GeneralConstant.MINIO_OSS) {
inputStream = minIoUtils.downloadStream(minIossProperties.getBucket(), filePath);
- }else {
+ } else if (generalInfo.getBusinessFileStorage() == GeneralConstant.AliYUN_OSS) {
+ inputStream = aliYunOssUtils.downloadStream(filePath);
+ } else {
// 本地存储处理
- Path path = Paths.get(generalInfo.getLocalStorePath()+File.separator+filePath);
+ Path path = Paths.get(generalInfo.getLocalStorePath() + File.separator + filePath);
inputStream = Files.newInputStream(path);
// 设置下载文件名(从路径中提取)
@@ -331,14 +354,16 @@ public class FileStorageUtil {
public void deleteFile(String fileName) {
if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) {
obsUtil.delete(fileName);
- } else if(generalInfo.getBusinessFileStorage() == GeneralConstant.MINIO_OSS){
+ } else if (generalInfo.getBusinessFileStorage() == GeneralConstant.MINIO_OSS) {
minIoUtils.removeObject(minIossProperties.getBucket(), fileName);
- } else if(generalInfo.getBusinessFileStorage() == GeneralConstant.LOCAL_DISK){
- Path path = Paths.get(generalInfo.getLocalStorePath()+File.separator+fileName);
+ } else if (generalInfo.getBusinessFileStorage() == GeneralConstant.AliYUN_OSS) {
+ aliYunOssUtils.deleteFile(fileName);
+ } else if (generalInfo.getBusinessFileStorage() == GeneralConstant.LOCAL_DISK) {
+ Path path = Paths.get(generalInfo.getLocalStorePath() + File.separator + fileName);
try {
Files.delete(path);
} catch (IOException e) {
- log.info("删除本地文件{}失败失败原因{}", path,e.getMessage());
+ log.info("删除本地文件{}失败失败原因{}", path, e.getMessage());
}
}
}
@@ -409,9 +434,10 @@ public class FileStorageUtil {
file = File.createTempFile(lastItem.objectName(), "xlsx");
FileUtil.writeFromStream(stream, file);
- }else if(generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS){
+ } else if (generalInfo.getBusinessFileStorage() == GeneralConstant.HUAWEI_OBS) {
file = obsUtil.getLastFile(OssPath.LOGBAK);
-
+ } else if (generalInfo.getBusinessFileStorage() == GeneralConstant.AliYUN_OSS) {
+ file = aliYunOssUtils.getLastFile(directory);
}
return file;
}