diff --git a/bonus-modules/bonus-oss/pom.xml b/bonus-modules/bonus-oss/pom.xml
index 6c24002..2bf6c58 100644
--- a/bonus-modules/bonus-oss/pom.xml
+++ b/bonus-modules/bonus-oss/pom.xml
@@ -51,19 +51,6 @@
fastdfs-client
-
-
- io.minio
- minio
- ${minio.version}
-
-
-
-
- com.bonus
- bonus-api-system
-
-
com.bonus
@@ -75,13 +62,19 @@
aliyun-sdk-oss
3.10.2
+
- com.mchange
- mchange-commons-java
- 0.2.15
- compile
+ com.bonus
+ bonus-common-core
+
+ org.projectlombok
+ lombok
+ provided
+
+
+
diff --git a/bonus-modules/bonus-oss/src/main/java/com/bonus/oss/controller/OssController.java b/bonus-modules/bonus-oss/src/main/java/com/bonus/oss/controller/OssController.java
index 4e38980..7a7e552 100644
--- a/bonus-modules/bonus-oss/src/main/java/com/bonus/oss/controller/OssController.java
+++ b/bonus-modules/bonus-oss/src/main/java/com/bonus/oss/controller/OssController.java
@@ -2,11 +2,10 @@ package com.bonus.oss.controller;
import com.aliyun.oss.model.OSSObject;
import com.bonus.common.core.domain.R;
+import com.bonus.common.core.utils.file.FileUtils;
import com.bonus.oss.domain.OssInfo;
import com.bonus.oss.service.OssService;
-import com.bonus.oss.utils.FileUtils;
import org.apache.poi.ss.formula.functions.T;
-import org.springframework.core.io.InputStreamResource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
@@ -21,7 +20,6 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
import java.util.List;
@RestController
@@ -37,19 +35,20 @@ public class OssController {
* @return 文件信息
*/
@PostMapping("/upload")
- public R upload(@RequestParam("file") MultipartFile file) {
+ public R upload(MultipartFile file) {
return ossService.upload(file);
}
+
/**
- * 多文件上传
+ * 文件上传
*
- * @param files 文件流数组
- * @return 上传结果
+ * @param files 文件流
+ * @return 文件信息
*/
- @PostMapping("/uploadMultiple")
- public R> uploadMultiple(@RequestParam("files") MultipartFile[] files) {
- return ossService.uploadMultiple(files);
+ @PostMapping("/uploadFiles")
+ public R> uploadFiles(MultipartFile[] files) {
+ return ossService.uploadFiles(files);
}
/**
@@ -97,39 +96,4 @@ public class OssController {
public R delete(@RequestParam String ossFilePath) {
return ossService.delete(ossFilePath);
}
-
- /**
- * 多文件删除
- *
- * @param ossFilePaths 文件路径列表
- * @return 删除结果
- */
- @PostMapping("/deleteMultiple")
- public R deleteMultiple(@RequestParam List ossFilePaths) {
- return ossService.deleteMultiple(ossFilePaths);
- }
-
- /**
- * 文件复制
- *
- * @param source 原oss文件存储地址
- * @param path 目标oss文件存储地址
- * @return 复制结果
- */
- @PostMapping("/copy")
- public R copy(@RequestParam String source, @RequestParam String path) {
- return ossService.copy(source, path);
- }
-
- /**
- * 多文件复制
- *
- * @param sources 原oss文件存储地址列表
- * @param paths 目标oss文件存储地址列表
- * @return 复制结果
- */
- @PostMapping("/copyMultiple")
- public R copyMultiple(@RequestParam List sources, @RequestParam List paths) {
- return ossService.copyMultiple(sources, paths);
- }
}
diff --git a/bonus-modules/bonus-oss/src/main/java/com/bonus/oss/domain/OssInfo.java b/bonus-modules/bonus-oss/src/main/java/com/bonus/oss/domain/OssInfo.java
index c3f9511..e91c430 100644
--- a/bonus-modules/bonus-oss/src/main/java/com/bonus/oss/domain/OssInfo.java
+++ b/bonus-modules/bonus-oss/src/main/java/com/bonus/oss/domain/OssInfo.java
@@ -1,72 +1,44 @@
package com.bonus.oss.domain;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
/**
- * @author 陈敏
- * @version Info.java, v 1.1 2021/11/15 10:16 chenmin Exp $
- * Created on 2021/11/15
+ * OssInfo类用于封装OSS(Object Storage Service)对象的相关信息。
+ * 通过此类,可以方便地管理和访问OSS对象的元数据,如名称、路径、大小等。
*/
-
+@Builder
+@Data
public class OssInfo {
/**
- * 名称
+ * 文件或对象的名称。
+ * 用于唯一标识OSS中的一个对象。
*/
private String name;
+
/**
- * oss里的路径存储路径
+ * 文件在OSS中的存储路径。
+ * 该路径不包含Bucket名称,仅指对象在Bucket内的相对路径。
*/
private String path;
+
/**
- * 对象大小
+ * 文件或对象的大小。
+ * 以字符串形式表示,单位可能为字节、KB、MB等。
*/
private String length;
+
/**
- * 文件类型
+ * 文件的类型。
+ * 可以是文件的MIME类型,或者根据文件扩展名推测的类型。
*/
private String fileType;
+
/**
- * Bucket名称
- **/
+ * 存储文件的Bucket名称。
+ * Bucket是OSS中用于存储对象的容器,每个对象必须属于某个Bucket。
+ */
private String bucketName;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getPath() {
- return path;
- }
-
- public void setPath(String path) {
- this.path = path;
- }
-
- public String getLength() {
- return length;
- }
-
- public void setLength(String length) {
- this.length = length;
- }
-
-
- public String getFileType() {
- return fileType;
- }
-
- public void setFileType(String fileType) {
- this.fileType = fileType;
- }
-
- public String getBucketName() {
- return bucketName;
- }
-
- public void setBucketName(String bucketName) {
- this.bucketName = bucketName;
- }
}
diff --git a/bonus-modules/bonus-oss/src/main/java/com/bonus/oss/service/OssService.java b/bonus-modules/bonus-oss/src/main/java/com/bonus/oss/service/OssService.java
index 8bd1e93..98ae794 100644
--- a/bonus-modules/bonus-oss/src/main/java/com/bonus/oss/service/OssService.java
+++ b/bonus-modules/bonus-oss/src/main/java/com/bonus/oss/service/OssService.java
@@ -33,39 +33,11 @@ public interface OssService {
* @return 操作结果
*/
R delete(String ossFilePath);
-
- /**
- * 文件复制
- *
- * @param source 原oss文件存储地址
- * @param path 目标oss文件存储地址
- * @return 操作结果
- */
- R copy(String source, String path);
-
/**
* 多文件上传
*
- * @param files 文件流数组
- * @return 上传结果
+ * @param files 文件流
+ * @return 文件信息
*/
- R> uploadMultiple(MultipartFile[] files);
-
-
- /**
- * 多文件删除
- *
- * @param ossFilePaths oss文件存储地址列表
- * @return 删除结果
- */
- R deleteMultiple(List ossFilePaths);
-
- /**
- * 多文件复制
- *
- * @param sources 源oss文件存储地址列表
- * @param paths 目标oss文件存储地址列表
- * @return 复制结果
- */
- R copyMultiple(List sources, List paths);
+ R> uploadFiles(MultipartFile[] files);
}
diff --git a/bonus-modules/bonus-oss/src/main/java/com/bonus/oss/service/impl/OssServiceImpl.java b/bonus-modules/bonus-oss/src/main/java/com/bonus/oss/service/impl/OssServiceImpl.java
index ade0570..b529f4e 100644
--- a/bonus-modules/bonus-oss/src/main/java/com/bonus/oss/service/impl/OssServiceImpl.java
+++ b/bonus-modules/bonus-oss/src/main/java/com/bonus/oss/service/impl/OssServiceImpl.java
@@ -2,9 +2,9 @@ package com.bonus.oss.service.impl;
import com.aliyun.oss.model.OSSObject;
import com.bonus.common.core.domain.R;
+import com.bonus.common.core.utils.file.FileUtils;
import com.bonus.oss.domain.OssInfo;
import com.bonus.oss.service.OssService;
-import com.bonus.oss.utils.FileUtils;
import com.bonus.oss.utils.OssUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.poi.ss.formula.functions.T;
@@ -12,6 +12,7 @@ import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
+import java.io.File;
import java.util.ArrayList;
import java.util.List;
@@ -24,16 +25,16 @@ public class OssServiceImpl implements OssService {
/**
* 文件上传
*
- * @param file 文件流
+ * @param multipartFile 文件流
* @return 文件信息
*/
@Override
- public R upload(MultipartFile file) {
+ public R upload(MultipartFile multipartFile) {
try {
- if (!FileUtils.isValidFile(file)) {
- return R.fail("File is empty or File size exceeds 5GB!");
- }
- return ossUtils.upload(file);
+ String objectKey = multipartFile.getOriginalFilename();
+ File file = FileUtils.multipartFileToFile(multipartFile);
+ objectKey = FileUtils.generateObjectName(objectKey);
+ return ossUtils.upload(objectKey, file);
} catch (Exception e) {
return R.fail("File upload failed.");
}
@@ -67,71 +68,25 @@ public class OssServiceImpl implements OssService {
}
}
- /**
- * 文件复制
- *
- * @param source 原oss文件存储地址target
- * @param path 目标oss文件存储地址
- */
- @Override
- public R copy(String source, String path) {
- return ossUtils.copy(source, path);
- }
-
/**
* 多文件上传
*
- * @param files 文件流数组
- * @return 上传结果
+ * @param files 文件流
+ * @return 文件信息
*/
@Override
- public R> uploadMultiple(MultipartFile[] files) {
- List uploadedFilesInfo = new ArrayList<>();
- for (MultipartFile file : files) {
- R result = upload(file);
- if (R.isError(result)) {
- return R.fail("部分文件上传失败");
+ public R> uploadFiles(MultipartFile[] files) {
+ try {
+ List ossInfos = new ArrayList<>();
+ for (MultipartFile multipartFile : files) {
+ String objectKey = multipartFile.getOriginalFilename();
+ File file = FileUtils.multipartFileToFile(multipartFile);
+ objectKey = FileUtils.generateObjectName(objectKey);
+ ossInfos.add(ossUtils.upload(objectKey, file).getData());
}
- uploadedFilesInfo.add(result.getData());
+ return R.ok(ossInfos);
+ } catch (Exception e) {
+ return R.fail("File upload failed.");
}
- return R.ok(uploadedFilesInfo);
- }
-
- /**
- * 多文件删除
- *
- * @param ossFilePaths oss文件存储地址列表
- * @return 删除结果
- */
- @Override
- public R deleteMultiple(List ossFilePaths) {
- for (String path : ossFilePaths) {
- R result = delete(path);
- if (R.isError(result)) {
- return R.fail("部分文件删除失败");
- }
- }
- return R.ok();
- }
-
- /**
- * 多文件复制
- *
- * @param sources 源oss文件存储地址列表
- * @param paths 目标oss文件存储地址列表
- * @return 复制结果
- */
- @Override
- public R copyMultiple(List sources, List paths) {
- if (sources.size() != paths.size()) {
- return R.fail("源文件和目标文件数量不匹配");
- }
- for (int i = 0; i < sources.size(); i++) {
- R result = copy(sources.get(i), paths.get(i));
- if (R.isError(result)) {
- return R.fail("部分文件复制失败");
- }
- }
- return R.ok();
}
}
diff --git a/bonus-modules/bonus-oss/src/main/java/com/bonus/oss/utils/OssUtils.java b/bonus-modules/bonus-oss/src/main/java/com/bonus/oss/utils/OssUtils.java
index 52550b7..7ca629d 100644
--- a/bonus-modules/bonus-oss/src/main/java/com/bonus/oss/utils/OssUtils.java
+++ b/bonus-modules/bonus-oss/src/main/java/com/bonus/oss/utils/OssUtils.java
@@ -47,21 +47,15 @@ public class OssUtils {
/**
* 上传文件
*
- * @param param MultipartFile对象
+ * @param file File
* @return 包含上传文件信息的R对象
*/
- public R upload(MultipartFile param) {
- // 获取上传文件的原始文件名
- String originalFilename = param.getOriginalFilename();
- // 将MultipartFile转换为File
- File file = FileUtils.multipartFileToFile(param);
+ public R upload(String objectKey, File file) {
try {
- // 生成唯一的对象名
- String objectName = FileUtils.generateObjectName(originalFilename);
// 上传文件到OSS
- ossClient.putObject(ossConfig.getBucket(), objectName, file);
+ ossClient.putObject(ossConfig.getBucket(), objectKey, file);
// 获取上传文件的信息并返回
- return R.ok(getInfo(originalFilename, objectName));
+ return R.ok(getInfo(objectKey));
} catch (Exception e) {
LOGGER.error("文件上传失败", e);
return R.fail("文件上传失败");
@@ -76,21 +70,18 @@ public class OssUtils {
/**
* 获取文件信息
*
- * @param filename 文件名
* @param ossFilePath 文件路径
* @return 包含文件信息的OssInfo对象
*/
- public OssInfo getInfo(String filename, String ossFilePath) {
+ public OssInfo getInfo(String ossFilePath) {
try {
// 获取文件的元数据
ObjectMetadata objectMetadata = ossClient.getObjectMetadata(ossConfig.getBucket(), ossFilePath);
- OssInfo ossInfo = new OssInfo();
- // 设置文件信息
- ossInfo.setLength(Convert.toStr(objectMetadata.getContentLength()));
- ossInfo.setFileType(objectMetadata.getContentType());
- ossInfo.setName(filename);
- ossInfo.setBucketName(ossConfig.getBucket());
- ossInfo.setPath(ossFilePath);
+ OssInfo ossInfo = OssInfo.builder()
+ .bucketName(ossConfig.getBucket())
+ .fileType(objectMetadata.getContentType())
+ .length(Convert.toStr(objectMetadata.getContentLength()))
+ .path(ossFilePath).build();
return ossInfo;
} catch (Exception e) {
LOGGER.error("获取文件信息失败", e);