From 4c6c570d49cd45091b9664c29ec878153db920bd Mon Sep 17 00:00:00 2001 From: xuxin <840198532@qq.com> Date: Mon, 10 Nov 2025 16:46:21 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8B=8D=E7=A9=B9=E5=A4=96=E5=8D=96--=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E8=8F=9C=E5=93=81-=E6=96=87=E4=BB=B6=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E5=8A=9F=E8=83=BD=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../com/sky/properties/AliOssProperties.java | 2 +- .../properties/InmindAliOSSProperties.java | 23 ++++++ .../java/com/sky/utils/InmindAliOSSUtils.java | 70 +++++++++++++++++++ .../java/com/sky/aspect/AutoFillAspect.java | 4 +- .../java/com/sky/config/OssConfiguration.java | 21 ++++++ .../controller/admin/CommonController.java | 41 +++++++++++ .../src/main/resources/application-dev.yml | 4 ++ sky-server/src/main/resources/application.yml | 6 +- 9 files changed, 168 insertions(+), 5 deletions(-) create mode 100644 sky-common/src/main/java/com/sky/properties/InmindAliOSSProperties.java create mode 100644 sky-common/src/main/java/com/sky/utils/InmindAliOSSUtils.java create mode 100644 sky-server/src/main/java/com/sky/config/OssConfiguration.java create mode 100644 sky-server/src/main/java/com/sky/controller/admin/CommonController.java diff --git a/pom.xml b/pom.xml index 96d60aa..d99c88c 100644 --- a/pom.xml +++ b/pom.xml @@ -25,7 +25,7 @@ 2.6 1.2.1 1.3.0 - 3.10.2 + 3.17.4 3.0.2 1.9.4 0.9.1 diff --git a/sky-common/src/main/java/com/sky/properties/AliOssProperties.java b/sky-common/src/main/java/com/sky/properties/AliOssProperties.java index 4e6c625..a75a69f 100644 --- a/sky-common/src/main/java/com/sky/properties/AliOssProperties.java +++ b/sky-common/src/main/java/com/sky/properties/AliOssProperties.java @@ -5,7 +5,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component -@ConfigurationProperties(prefix = "sky.alioss") +@ConfigurationProperties(prefix = "sky.alioss1") @Data public class AliOssProperties { diff --git a/sky-common/src/main/java/com/sky/properties/InmindAliOSSProperties.java b/sky-common/src/main/java/com/sky/properties/InmindAliOSSProperties.java new file mode 100644 index 0000000..bd1c90f --- /dev/null +++ b/sky-common/src/main/java/com/sky/properties/InmindAliOSSProperties.java @@ -0,0 +1,23 @@ +package com.sky.properties; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * ClassName: AliOSSProperties + * Package: com.inmind.utils + * Description: + * + * @Author xuxin + * @Create 5/14 15:10 + * @Version 1.0 + */ +@Data +@Component +@ConfigurationProperties(prefix = "sky.alioss") +public class InmindAliOSSProperties { + private String endpoint; + private String bucketName; + private String region; +} diff --git a/sky-common/src/main/java/com/sky/utils/InmindAliOSSUtils.java b/sky-common/src/main/java/com/sky/utils/InmindAliOSSUtils.java new file mode 100644 index 0000000..a981e42 --- /dev/null +++ b/sky-common/src/main/java/com/sky/utils/InmindAliOSSUtils.java @@ -0,0 +1,70 @@ +package com.sky.utils; + +import com.aliyun.oss.ClientBuilderConfiguration; +import com.aliyun.oss.OSS; +import com.aliyun.oss.OSSClientBuilder; +import com.aliyun.oss.common.auth.CredentialsProviderFactory; +import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider; +import com.aliyun.oss.common.comm.SignVersion; +import com.aliyun.oss.model.PutObjectRequest; +import com.aliyun.oss.model.PutObjectResult; +import com.aliyuncs.exceptions.ClientException; +import com.sky.properties.InmindAliOSSProperties; +import lombok.AllArgsConstructor; +import lombok.Data; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.io.InputStream; +import java.util.UUID; + +/** + * 阿里云 OSS 工具类 + */ +@Data +@AllArgsConstructor +//@Component +public class InmindAliOSSUtils { + + /*@Value("${aliyun.oss.endpoint}") + private String endpoint; + @Value("${aliyun.oss.bucketName}") + private String bucketName; + @Value("${aliyun.oss.region}") + private String region ;*/ + InmindAliOSSProperties aliOSSProperties; + + /** + * 实现上传图片到OSS + */ + public String upload(MultipartFile file) throws IOException, ClientException { + // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。 + EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider(); + // 获取上传的文件的输入流 + InputStream inputStream = file.getInputStream(); + // 避免文件覆盖 + String originalFilename = file.getOriginalFilename(); + String fileName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf(".")); + //上传文件到 OSS + // 创建OSSClient实例。 + ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration(); + clientBuilderConfiguration.setSignatureVersion(SignVersion.V4); + OSS ossClient = OSSClientBuilder.create() + .endpoint(aliOSSProperties.getEndpoint()) + .credentialsProvider(credentialsProvider) + .clientConfiguration(clientBuilderConfiguration) + .region(aliOSSProperties.getRegion()) + .build(); + // 创建PutObjectRequest对象。 + PutObjectRequest putObjectRequest = new PutObjectRequest(aliOSSProperties.getBucketName(), fileName, inputStream); + PutObjectResult result = ossClient.putObject(putObjectRequest); + //文件访问路径 + String url = aliOSSProperties.getEndpoint().split("//")[0] + "//" + aliOSSProperties.getBucketName() + "." + aliOSSProperties.getEndpoint().split("//")[1] + "/" + fileName; + // 关闭ossClient + ossClient.shutdown(); + return url;// 把上传到oss的路径返回 + } + +} diff --git a/sky-server/src/main/java/com/sky/aspect/AutoFillAspect.java b/sky-server/src/main/java/com/sky/aspect/AutoFillAspect.java index 4111967..f33fa10 100644 --- a/sky-server/src/main/java/com/sky/aspect/AutoFillAspect.java +++ b/sky-server/src/main/java/com/sky/aspect/AutoFillAspect.java @@ -58,13 +58,13 @@ public class AutoFillAspect { Method setUpdateUser = arg.getClass().getDeclaredMethod(AutoFillConstant.SET_UPDATE_USER, Long.class); setUpdateUser.invoke(arg,currentId); - } else { + } //update Method setUpdateTime = arg.getClass().getDeclaredMethod(AutoFillConstant.SET_UPDATE_TIME, LocalDateTime.class); setUpdateTime.invoke(arg,now); Method setUpdateUser = arg.getClass().getDeclaredMethod(AutoFillConstant.SET_UPDATE_USER, Long.class); setUpdateUser.invoke(arg,currentId); - } + } catch (Exception e) { throw new RuntimeException(e); } diff --git a/sky-server/src/main/java/com/sky/config/OssConfiguration.java b/sky-server/src/main/java/com/sky/config/OssConfiguration.java new file mode 100644 index 0000000..61270df --- /dev/null +++ b/sky-server/src/main/java/com/sky/config/OssConfiguration.java @@ -0,0 +1,21 @@ +package com.sky.config; + +import com.sky.properties.InmindAliOSSProperties; +import com.sky.utils.InmindAliOSSUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * 为sky-server模块,注册OSS工具类对象到sprong容器中 + */ +@Configuration +@Slf4j +public class OssConfiguration { + + @Bean + public InmindAliOSSUtils inmindAliOSSUtils(InmindAliOSSProperties aliOSSProperties){ + log.info("开始创建阿里云文件上传工具类对象到sprong容器中...,{}",aliOSSProperties); + return new InmindAliOSSUtils(aliOSSProperties); + } +} diff --git a/sky-server/src/main/java/com/sky/controller/admin/CommonController.java b/sky-server/src/main/java/com/sky/controller/admin/CommonController.java new file mode 100644 index 0000000..01b0525 --- /dev/null +++ b/sky-server/src/main/java/com/sky/controller/admin/CommonController.java @@ -0,0 +1,41 @@ +package com.sky.controller.admin; + +import com.aliyuncs.exceptions.ClientException; +import com.sky.result.Result; +import com.sky.utils.InmindAliOSSUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; + +@RestController +@Slf4j +@Api(tags = "通用接口") +@RequestMapping("/admin/common") +public class CommonController { + + @Autowired + private InmindAliOSSUtils inmindAliOSSUtils; + + + @PostMapping("/upload") + @ApiOperation("文件上传") + public Result upload(MultipartFile file) { + log.info("文件上传:{}",file); + String uploadUrl = null; + try { + uploadUrl = inmindAliOSSUtils.upload(file); + } catch (IOException e) { + throw new RuntimeException(e); + } catch (ClientException e) { + throw new RuntimeException(e); + } + return Result.success(uploadUrl); + } +} diff --git a/sky-server/src/main/resources/application-dev.yml b/sky-server/src/main/resources/application-dev.yml index a66a951..134d8a8 100644 --- a/sky-server/src/main/resources/application-dev.yml +++ b/sky-server/src/main/resources/application-dev.yml @@ -6,3 +6,7 @@ sky: database: sky_take_out2 username: root password: 1234 + alioss: + endpoint: https://oss-cn-shanghai.aliyuncs.com + bucket-name: inmind-test + region: cn-shanghai diff --git a/sky-server/src/main/resources/application.yml b/sky-server/src/main/resources/application.yml index bc61ce1..b682adc 100644 --- a/sky-server/src/main/resources/application.yml +++ b/sky-server/src/main/resources/application.yml @@ -3,7 +3,7 @@ server: spring: profiles: - active: dev + active: dev #程序的运行环境:开发环境 main: allow-circular-references: true datasource: @@ -37,3 +37,7 @@ sky: admin-ttl: 72000000 # 设置前端传递过来的令牌名称 admin-token-name: token + alioss: + endpoint: ${sky.alioss.endpoint} + bucket-name: ${sky.alioss.bucket-name} + region: ${sky.alioss.region}