From c793d867e3cf74a7110a154a05bd9533ae9e459e Mon Sep 17 00:00:00 2001 From: Qing Date: Sat, 17 Feb 2024 20:14:48 +0800 Subject: [PATCH] feat: oss develop --- jc-club-oss/pom.xml | 128 ++++++++++++++++++ .../com/landaiqing/oss/OssApplication.java | 20 +++ .../oss/adapter/AliStorageAdapter.java | 58 ++++++++ .../oss/adapter/MinioStorageAdapter.java | 85 ++++++++++++ .../oss/adapter/StorageAdapter.java | 83 ++++++++++++ .../landaiqing/oss/config/MinioConfig.java | 43 ++++++ .../landaiqing/oss/config/StorageConfig.java | 39 ++++++ .../oss/controller/FileController.java | 45 ++++++ .../com/landaiqing/oss/entity/FileInfo.java | 42 ++++++ .../com/landaiqing/oss/entity/Result.java | 50 +++++++ .../landaiqing/oss/entity/ResultCodeEnum.java | 29 ++++ .../landaiqing/oss/service/FileService.java | 49 +++++++ .../com/landaiqing/oss/util/MinioUtil.java | 126 +++++++++++++++++ .../src/main/resources/application.yml | 8 ++ jc-club-oss/src/main/resources/bootstrap.yml | 17 +++ .../src/main/resources/application.yml | 4 +- 16 files changed, 824 insertions(+), 2 deletions(-) create mode 100644 jc-club-oss/pom.xml create mode 100644 jc-club-oss/src/main/java/com/landaiqing/oss/OssApplication.java create mode 100644 jc-club-oss/src/main/java/com/landaiqing/oss/adapter/AliStorageAdapter.java create mode 100644 jc-club-oss/src/main/java/com/landaiqing/oss/adapter/MinioStorageAdapter.java create mode 100644 jc-club-oss/src/main/java/com/landaiqing/oss/adapter/StorageAdapter.java create mode 100644 jc-club-oss/src/main/java/com/landaiqing/oss/config/MinioConfig.java create mode 100644 jc-club-oss/src/main/java/com/landaiqing/oss/config/StorageConfig.java create mode 100644 jc-club-oss/src/main/java/com/landaiqing/oss/controller/FileController.java create mode 100644 jc-club-oss/src/main/java/com/landaiqing/oss/entity/FileInfo.java create mode 100644 jc-club-oss/src/main/java/com/landaiqing/oss/entity/Result.java create mode 100644 jc-club-oss/src/main/java/com/landaiqing/oss/entity/ResultCodeEnum.java create mode 100644 jc-club-oss/src/main/java/com/landaiqing/oss/service/FileService.java create mode 100644 jc-club-oss/src/main/java/com/landaiqing/oss/util/MinioUtil.java create mode 100644 jc-club-oss/src/main/resources/application.yml create mode 100644 jc-club-oss/src/main/resources/bootstrap.yml diff --git a/jc-club-oss/pom.xml b/jc-club-oss/pom.xml new file mode 100644 index 0000000..b49e121 --- /dev/null +++ b/jc-club-oss/pom.xml @@ -0,0 +1,128 @@ + + 4.0.0 + + com.landaiqing + jc-club-oss + 1.0-SNAPSHOT + jar + + jc-club-oss + http://maven.apache.org + + + + 8 + 8 + 1.8 + UTF-8 + UTF-8 + 2.4.2 + 2021.1 + 2020.0.6 + + + + + org.springframework.boot + spring-boot-starter-web + + + spring-boot-starter-logging + org.springframework.boot + + + + + io.minio + minio + 8.2.0 + + + org.projectlombok + lombok + 1.18.20 + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + + + + + + org.springframework.boot + spring-boot-starter-log4j2 + + + org.springframework.cloud + spring-cloud-starter-bootstrap + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + com.alibaba.cloud + spring-cloud-alibaba-dependencies + ${spring-cloud-alibaba.version} + pom + import + + + + + + ${project.artifactId} + + + + org.springframework.boot + spring-boot-maven-plugin + 2.3.0.RELEASE + + + + repackage + + + + + + + + + + central + aliyun maven + http://maven.aliyun.com/nexus/content/groups/public/ + default + + true + + + true + + + + diff --git a/jc-club-oss/src/main/java/com/landaiqing/oss/OssApplication.java b/jc-club-oss/src/main/java/com/landaiqing/oss/OssApplication.java new file mode 100644 index 0000000..9f8bd4a --- /dev/null +++ b/jc-club-oss/src/main/java/com/landaiqing/oss/OssApplication.java @@ -0,0 +1,20 @@ +package com.landaiqing.oss; + + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.ComponentScan; + +/** + * oss 服务启动类 + * + * @author: landaiqing + * @date: 2024/2/17 + */ +@SpringBootApplication +@ComponentScan("com.landaiqing") +public class OssApplication { + public static void main(String[] args) { + SpringApplication.run(OssApplication.class); + } +} diff --git a/jc-club-oss/src/main/java/com/landaiqing/oss/adapter/AliStorageAdapter.java b/jc-club-oss/src/main/java/com/landaiqing/oss/adapter/AliStorageAdapter.java new file mode 100644 index 0000000..249125c --- /dev/null +++ b/jc-club-oss/src/main/java/com/landaiqing/oss/adapter/AliStorageAdapter.java @@ -0,0 +1,58 @@ +package com.landaiqing.oss.adapter; + +import com.landaiqing.oss.entity.FileInfo; +import org.springframework.web.multipart.MultipartFile; + +import java.io.InputStream; +import java.util.List; + +/** + * @Classname AliStorageServiceImpl + * @BelongsProject: jc-club + * @BelongsPackage: com.landaiqing.oss.service.impl + * @Author: landaiqing + * @CreateTime: 2024-02-17 16:55 + * @Description: TODO + * @Version: 1.0 + */ +public class AliStorageAdapter implements StorageAdapter { + @Override + public void createBucket(String bucket) { + + } + + @Override + public void uploadFile(MultipartFile uploadFile, String bucket, String objectName) { + + } + + @Override + public List getAllBucket() { + System.out.println("aliyun"); + return null; + } + + @Override + public List getAllFile(String bucket) { + return null; + } + + @Override + public InputStream download(String bucket, String objectName) { + return null; + } + + @Override + public void deleteBucket(String bucket) { + + } + + @Override + public void deleteObject(String bucket, String objectName) { + + } + @Override + public String getUrl(String bucket, String objectName) { + return null; + } +} diff --git a/jc-club-oss/src/main/java/com/landaiqing/oss/adapter/MinioStorageAdapter.java b/jc-club-oss/src/main/java/com/landaiqing/oss/adapter/MinioStorageAdapter.java new file mode 100644 index 0000000..1fba04d --- /dev/null +++ b/jc-club-oss/src/main/java/com/landaiqing/oss/adapter/MinioStorageAdapter.java @@ -0,0 +1,85 @@ +package com.landaiqing.oss.adapter; + +import com.landaiqing.oss.entity.FileInfo; +import com.landaiqing.oss.util.MinioUtil; +import lombok.SneakyThrows; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import java.io.InputStream; +import java.util.List; + +/** + * @Classname MinioStorageServiceImpl + * @BelongsProject: jc-club + * @BelongsPackage: com.landaiqing.oss.service.impl + * @Author: landaiqing + * @CreateTime: 2024-02-17 16:35 + * @Description: TODO + * @Version: 1.0 + */ +public class MinioStorageAdapter implements StorageAdapter { + @Resource + private MinioUtil minioUtil; + + /** + * minioUrl + */ + @Value("${minio.url}") + private String url; + + @Override + @SneakyThrows + public void createBucket(String bucket) { + minioUtil.createBucket(bucket); + } + + @Override + @SneakyThrows + public void uploadFile(MultipartFile uploadFile, String bucket, String objectName) { + minioUtil.createBucket(bucket); + if (objectName != null) { + minioUtil.uploadFile(uploadFile.getInputStream(), bucket, objectName + "/" + uploadFile.getName()); + } else { + minioUtil.uploadFile(uploadFile.getInputStream(), bucket, uploadFile.getName()); + } + } + + @Override + @SneakyThrows + public List getAllBucket() { + return minioUtil.getAllBucket(); + } + + @Override + @SneakyThrows + public List getAllFile(String bucket) { + return minioUtil.getAllFile(bucket); + } + + @Override + @SneakyThrows + public InputStream download(String bucket, String objectName) { + return minioUtil.download(bucket, objectName); + } + + @Override + @SneakyThrows + public void deleteBucket(String bucket) { + minioUtil.deleteBucket(bucket); + } + + @Override + @SneakyThrows + public void deleteObject(String bucket, String objectName) { + minioUtil.deleteObject(bucket, objectName); + } + + @Override + @SneakyThrows + public String getUrl(String bucket, String objectName) { + return url + "/" + bucket + "/" + objectName; + } + +} diff --git a/jc-club-oss/src/main/java/com/landaiqing/oss/adapter/StorageAdapter.java b/jc-club-oss/src/main/java/com/landaiqing/oss/adapter/StorageAdapter.java new file mode 100644 index 0000000..f04bdf8 --- /dev/null +++ b/jc-club-oss/src/main/java/com/landaiqing/oss/adapter/StorageAdapter.java @@ -0,0 +1,83 @@ +package com.landaiqing.oss.adapter; + +import com.landaiqing.oss.entity.FileInfo; +import org.springframework.web.multipart.MultipartFile; + +import java.io.InputStream; +import java.util.List; + +/** + * @Classname StorageService + * @BelongsProject: jc-club + * @BelongsPackage: com.landaiqing.oss.service + * @Author: landaiqing + * @CreateTime: 2024-02-17 16:32 + * @Description: 文件存储适配器 + * @Version: 1.0 + */ +public interface StorageAdapter { + /** + * @description: 创建Bucket桶 + * @param: [bucket] + * @return: void + * @author landaiqing + * @date: 2024/2/17 15:53 + */ + void createBucket(String bucket); + + /** + * @description: 上传文件 + * @param: [inputStream, bucket, objectName] + * @return: void + * @author landaiqing + * @date: 2024/2/17 15:58 + */ + void uploadFile(MultipartFile uploadFile, String bucket, String objectName); + + /** + * @description: 列出所有桶 + * @param: [] + * @return: java.util.List + * @author landaiqing + * @date: 2024/2/17 16:00 + */ + List getAllBucket(); + + /** + * @description: 列出当前桶及文件 + * @param: [bucket] + * @return: java.util.List + * @author landaiqing + * @date: 2024/2/17 16:06 + */ + List getAllFile(String bucket); + + /** + * @description: 下载文件 + * @param: [bucket, objectName] + * @return: java.io.InputStream + * @author landaiqing + * @date: 2024/2/17 16:11 + */ + InputStream download(String bucket, String objectName); + + /** + * @description: 删除桶 + * @param: [bucket] + * @return: void + * @author landaiqing + * @date: 2024/2/17 16:14 + */ + void deleteBucket(String bucket); + + /** + * @description: 删除文件 + * @param: [bucket, objectName] + * @return: void + * @author landaiqing + * @date: 2024/2/17 16:14 + */ + void deleteObject(String bucket, String objectName); + + String getUrl(String bucket, String objectName); +} diff --git a/jc-club-oss/src/main/java/com/landaiqing/oss/config/MinioConfig.java b/jc-club-oss/src/main/java/com/landaiqing/oss/config/MinioConfig.java new file mode 100644 index 0000000..b670970 --- /dev/null +++ b/jc-club-oss/src/main/java/com/landaiqing/oss/config/MinioConfig.java @@ -0,0 +1,43 @@ +package com.landaiqing.oss.config; + +import io.minio.MinioClient; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @Classname MinioConfig + * @BelongsProject: jc-club + * @BelongsPackage: com.landaiqing.oss.config + * @Author: landaiqing + * @CreateTime: 2024-02-17 15:44 + * @Description: Minio配置管理 + * @Version: 1.0 + */ +@Configuration +public class MinioConfig { + /** + * minioUrl + */ + @Value("${minio.url}") + private String url; + /** + * minio账户 + */ + @Value("${minio.accessKey}") + private String accessKey; + /** + * minio密码 + */ + @Value("${minio.secretKey}") + private String secretKey; + + /** + * 构造minioClient + */ + @Bean + public MinioClient getMinioClient(){ + return MinioClient.builder().endpoint(url).credentials(accessKey,secretKey ).build(); + } + +} diff --git a/jc-club-oss/src/main/java/com/landaiqing/oss/config/StorageConfig.java b/jc-club-oss/src/main/java/com/landaiqing/oss/config/StorageConfig.java new file mode 100644 index 0000000..2ee77b6 --- /dev/null +++ b/jc-club-oss/src/main/java/com/landaiqing/oss/config/StorageConfig.java @@ -0,0 +1,39 @@ +package com.landaiqing.oss.config; + +import com.landaiqing.oss.adapter.StorageAdapter; +import com.landaiqing.oss.adapter.AliStorageAdapter; +import com.landaiqing.oss.adapter.MinioStorageAdapter; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @Classname StorageConfig + * @BelongsProject: jc-club + * @BelongsPackage: com.landaiqing.oss.config + * @Author: landaiqing + * @CreateTime: 2024-02-17 16:52 + * @Description: TODO + * @Version: 1.0 + */ +@Configuration +@RefreshScope +public class StorageConfig { + @Value("${storage.service.type}") + private String storageType; + + + @Bean + @RefreshScope + public StorageAdapter storageService(){ + if ("minio".equals(storageType)) { + return new MinioStorageAdapter(); + } else if ("aliyun".equals(storageType)) { + return new AliStorageAdapter(); + } else { + throw new IllegalArgumentException("未找到对应的文件处理"); + } + } + +} diff --git a/jc-club-oss/src/main/java/com/landaiqing/oss/controller/FileController.java b/jc-club-oss/src/main/java/com/landaiqing/oss/controller/FileController.java new file mode 100644 index 0000000..49c6084 --- /dev/null +++ b/jc-club-oss/src/main/java/com/landaiqing/oss/controller/FileController.java @@ -0,0 +1,45 @@ +package com.landaiqing.oss.controller; + +import com.landaiqing.oss.entity.Result; +import com.landaiqing.oss.service.FileService; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Classname FileController + * @BelongsProject: jc-club + * @BelongsPackage: com.landaiqing.oss.controller + * @Author: landaiqing + * @CreateTime: 2024-02-17 16:18 + * @Description: TODO + * @Version: 1.0 + */ +@RestController +public class FileController { + @Resource + private FileService fileService; + + @RequestMapping("/testGetAllBuckets") + public String testGetAllBuckets() throws Exception { + List allBucket = fileService.getAllBucket(); + return allBucket.get(0); + } + + @RequestMapping("/getUrl") + public String getUrl(String bucketName, String objectName) throws Exception { + return fileService.getUrl(bucketName, objectName); + } + + /** + * 上传文件 + */ + @RequestMapping("/upload") + public Result upload(MultipartFile uploadFile, String bucket, String objectName) throws Exception { + String url = fileService.uploadFile(uploadFile, bucket, objectName); + return Result.ok(url); + } +} diff --git a/jc-club-oss/src/main/java/com/landaiqing/oss/entity/FileInfo.java b/jc-club-oss/src/main/java/com/landaiqing/oss/entity/FileInfo.java new file mode 100644 index 0000000..d516b9f --- /dev/null +++ b/jc-club-oss/src/main/java/com/landaiqing/oss/entity/FileInfo.java @@ -0,0 +1,42 @@ +package com.landaiqing.oss.entity; + +/** + * @Classname FileInfo + * @BelongsProject: jc-club + * @BelongsPackage: com.landaiqing.oss.entity + * @Author: landaiqing + * @CreateTime: 2024-02-17 16:04 + * @Description: 文件类 + * @Version: 1.0 + */ +public class FileInfo { + + + private String fileName; + private Boolean directoryFlag; + private String etag; + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public Boolean getDirectoryFlag() { + return directoryFlag; + } + + public void setDirectoryFlag(Boolean directoryFlag) { + this.directoryFlag = directoryFlag; + } + + public String getEtag() { + return etag; + } + + public void setEtag(String etag) { + this.etag = etag; + } +} diff --git a/jc-club-oss/src/main/java/com/landaiqing/oss/entity/Result.java b/jc-club-oss/src/main/java/com/landaiqing/oss/entity/Result.java new file mode 100644 index 0000000..bbe701e --- /dev/null +++ b/jc-club-oss/src/main/java/com/landaiqing/oss/entity/Result.java @@ -0,0 +1,50 @@ +package com.landaiqing.oss.entity; + +import lombok.Data; + +@Data +public class Result { + + private Boolean success; + + private Integer code; + + private String message; + + private T data; + + public static Result ok(){ + Result result = new Result(); + result.setSuccess(true); + result.setCode(ResultCodeEnum.SUCCESS.getCode()); + result.setMessage(ResultCodeEnum.SUCCESS.getDesc()); + return result; + } + + public static Result ok(T data){ + Result result = new Result(); + result.setSuccess(true); + result.setCode(ResultCodeEnum.SUCCESS.getCode()); + result.setMessage(ResultCodeEnum.SUCCESS.getDesc()); + result.setData(data); + return result; + } + + public static Result fail(){ + Result result = new Result(); + result.setSuccess(false); + result.setCode(ResultCodeEnum.FAIL.getCode()); + result.setMessage(ResultCodeEnum.FAIL.getDesc()); + return result; + } + + public static Result fail(T data){ + Result result = new Result(); + result.setSuccess(false); + result.setCode(ResultCodeEnum.FAIL.getCode()); + result.setMessage(ResultCodeEnum.FAIL.getDesc()); + result.setData(data); + return result; + } + +} diff --git a/jc-club-oss/src/main/java/com/landaiqing/oss/entity/ResultCodeEnum.java b/jc-club-oss/src/main/java/com/landaiqing/oss/entity/ResultCodeEnum.java new file mode 100644 index 0000000..91d14f1 --- /dev/null +++ b/jc-club-oss/src/main/java/com/landaiqing/oss/entity/ResultCodeEnum.java @@ -0,0 +1,29 @@ +package com.landaiqing.oss.entity; + +import lombok.Getter; + +@Getter +public enum ResultCodeEnum { + + SUCCESS(200,"成功"), + FAIL(500,"失败"); + + public int code; + + public String desc; + + ResultCodeEnum(int code,String desc){ + this.code = code; + this.desc = desc; + } + + public static ResultCodeEnum getByCode(int codeVal){ + for(ResultCodeEnum resultCodeEnum : ResultCodeEnum.values()){ + if(resultCodeEnum.code == codeVal){ + return resultCodeEnum; + } + } + return null; + } + +} diff --git a/jc-club-oss/src/main/java/com/landaiqing/oss/service/FileService.java b/jc-club-oss/src/main/java/com/landaiqing/oss/service/FileService.java new file mode 100644 index 0000000..de35bd5 --- /dev/null +++ b/jc-club-oss/src/main/java/com/landaiqing/oss/service/FileService.java @@ -0,0 +1,49 @@ +package com.landaiqing.oss.service; + +import com.landaiqing.oss.adapter.StorageAdapter; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +/** + * @Classname FileService + * @BelongsProject: jc-club + * @BelongsPackage: com.landaiqing.oss.service + * @Author: landaiqing + * @CreateTime: 2024-02-17 16:50 + * @Description: TODO + * @Version: 1.0 + */ +@Service +public class FileService { + private final StorageAdapter storageAdapter; + + public FileService(StorageAdapter storageAdapter) { + this.storageAdapter = storageAdapter; + } + + + /** + * 列出所有桶 + */ + public List getAllBucket() { + return storageAdapter.getAllBucket(); + } + + /** + * 获取文件路径 + */ + public String getUrl(String bucketName,String objectName) { + return storageAdapter.getUrl(bucketName,objectName); + } + + /** + * 上传文件 + */ + public String uploadFile(MultipartFile uploadFile, String bucket, String objectName){ + storageAdapter.uploadFile(uploadFile,bucket,objectName); + objectName = objectName + "/" + uploadFile.getOriginalFilename(); + return storageAdapter.getUrl(bucket, objectName); + } +} diff --git a/jc-club-oss/src/main/java/com/landaiqing/oss/util/MinioUtil.java b/jc-club-oss/src/main/java/com/landaiqing/oss/util/MinioUtil.java new file mode 100644 index 0000000..44b10f9 --- /dev/null +++ b/jc-club-oss/src/main/java/com/landaiqing/oss/util/MinioUtil.java @@ -0,0 +1,126 @@ +package com.landaiqing.oss.util; + +import com.landaiqing.oss.entity.FileInfo; +import io.minio.*; +import io.minio.errors.*; +import io.minio.messages.Bucket; +import io.minio.messages.Item; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.io.IOException; +import java.io.InputStream; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.util.LinkedList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @Classname MinioUtil + * @BelongsProject: jc-club + * @BelongsPackage: com.landaiqing.oss.util + * @Author: landaiqing + * @CreateTime: 2024-02-17 15:50 + * @Description: minio文件操作工具 + * @Version: 1.0 + */ +@Component +public class MinioUtil { + @Resource + private MinioClient minioClient; + + /** + * @description: 创建Bucket桶 + * @param: [bucket] + * @return: void + * @author landaiqing + * @date: 2024/2/17 15:53 + */ + public void createBucket(String bucket) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException { + boolean exists = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucket).build()); + if (!exists) { + minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucket).build()); + } + } + + /** + * @description: 上传文件 + * @param: [inputStream, bucket, objectName] + * @return: void + * @author landaiqing + * @date: 2024/2/17 15:58 + */ + public void uploadFile(InputStream inputStream, String bucket, String objectName) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException { + minioClient.putObject(PutObjectArgs.builder().bucket(bucket).object(objectName) + .stream(inputStream, -1, Integer.MAX_VALUE).build()); + } + + /** + * @description: 列出所有桶 + * @param: [] + * @return: java.util.List + * @author landaiqing + * @date: 2024/2/17 16:00 + */ + public List getAllBucket() throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException { + List buckets = minioClient.listBuckets(); + return buckets.stream().map(Bucket::name).collect(Collectors.toList()); + } + + /** + * @description: 列出当前桶及文件 + * @param: [bucket] + * @return: java.util.List + * @author landaiqing + * @date: 2024/2/17 16:06 + */ + public List getAllFile(String bucket) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException { + Iterable> results = minioClient.listObjects( + ListObjectsArgs.builder().bucket(bucket).build()); + List fileInfoList = new LinkedList<>(); + for (Result result : results) { + FileInfo fileInfo = new FileInfo(); + Item item = result.get(); + fileInfo.setFileName(item.objectName()); + fileInfo.setDirectoryFlag(item.isDir()); + fileInfo.setEtag(item.etag()); + fileInfoList.add(fileInfo); + } + return fileInfoList; + } + + /** + * @description: 下载文件 + * @param: [bucket, objectName] + * @return: java.io.InputStream + * @author landaiqing + * @date: 2024/2/17 16:11 + */ + public InputStream download(String bucket, String objectName) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException { + return minioClient.getObject(GetObjectArgs.builder().bucket(bucket).object(objectName).build()); + } + + /** + * @description: 删除桶 + * @param: [bucket] + * @return: void + * @author landaiqing + * @date: 2024/2/17 16:14 + */ + public void deleteBucket(String bucket) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException { + minioClient.removeBucket(RemoveBucketArgs.builder().bucket(bucket).build()); + } + + /** + * @description: 删除文件 + * @param: [bucket, objectName] + * @return: void + * @author landaiqing + * @date: 2024/2/17 16:14 + */ + public void deleteObject(String bucket, String objectName) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException { + minioClient.removeObject( + RemoveObjectArgs.builder().bucket(bucket).object(objectName).build()); + } +} diff --git a/jc-club-oss/src/main/resources/application.yml b/jc-club-oss/src/main/resources/application.yml new file mode 100644 index 0000000..08fe2f3 --- /dev/null +++ b/jc-club-oss/src/main/resources/application.yml @@ -0,0 +1,8 @@ +server: + port: 4000 +minio: + url: http://47.108.158.61:9000/ + accessKey: landaiqing + secretKey: LDQ20020618xxx + + diff --git a/jc-club-oss/src/main/resources/bootstrap.yml b/jc-club-oss/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..694deb4 --- /dev/null +++ b/jc-club-oss/src/main/resources/bootstrap.yml @@ -0,0 +1,17 @@ +spring: + application: + name: jc-club-oss + profiles: + active: dev + cloud: + nacos: + config: + server-addr: 47.108.158.61:8848 + prefix: ${spring.application.name} + group: DEFAULT_GROUP + namespace: + file-extension: yaml + discovery: + enabled: true + server-addr: 117.72.14.166:8848 + diff --git a/jc-club-subject/jc-club-starter/src/main/resources/application.yml b/jc-club-subject/jc-club-starter/src/main/resources/application.yml index 40fd3f3..32410cf 100644 --- a/jc-club-subject/jc-club-starter/src/main/resources/application.yml +++ b/jc-club-subject/jc-club-starter/src/main/resources/application.yml @@ -2,10 +2,10 @@ server: port: 3000 spring: datasource: - username: root + username: landaiqing password: iPHzskWvLGI2TrPw2AV7pu4C8O4bfxSSeQrkIqq0ZwM5tpBmx4aI6xN/8xjYgSmIir5v2Cv35Fn2732AypFKww== driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://47.108.158.61:3306/jc-club?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=true + url: jdbc:mysql://116.196.80.239:3306/jc-club?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=true type: com.alibaba.druid.pool.DruidDataSource druid: initial-size: 20