From 7537a4095b87a4aae034742c08853ada112ce6ab Mon Sep 17 00:00:00 2001 From: WWY Date: Sat, 18 Jan 2025 21:54:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=9B=BE=E7=89=87=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E5=88=B0=E9=98=BF=E9=87=8C=E4=BA=91OSS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- weblog-springboot/pom.xml | 34 +++++++++ weblog-springboot/weblog-module-admin/pom.xml | 14 ++++ .../weblog/admin/config/AliOssProperties.java | 18 +++++ .../weblog/admin/config/OssConfiguration.java | 26 +++++++ .../service/impl/AdminFileServiceImpl.java | 24 +++++- .../weblog/admin/utils/AliOssUtil.java | 74 +++++++++++++++++++ .../src/main/resources/application.yaml | 10 ++- 7 files changed, 198 insertions(+), 2 deletions(-) create mode 100644 weblog-springboot/weblog-module-admin/src/main/java/com/quanxiaoha/weblog/admin/config/AliOssProperties.java create mode 100644 weblog-springboot/weblog-module-admin/src/main/java/com/quanxiaoha/weblog/admin/config/OssConfiguration.java create mode 100644 weblog-springboot/weblog-module-admin/src/main/java/com/quanxiaoha/weblog/admin/utils/AliOssUtil.java diff --git a/weblog-springboot/pom.xml b/weblog-springboot/pom.xml index c40c761..28ac1fe 100644 --- a/weblog-springboot/pom.xml +++ b/weblog-springboot/pom.xml @@ -30,6 +30,11 @@ 8.2.1 0.62.2 2.7.0 + 3.10.2 + 3.0.2 + 1.9.4 + 2.3.1 + 1.2.76 ${java.version} @@ -53,6 +58,35 @@ + + + org.aspectj + aspectjrt + ${aspectj} + + + + org.aspectj + aspectjweaver + ${aspectj} + + + + + com.aliyun.oss + aliyun-sdk-oss + ${aliyun.sdk.oss} + + + com.alibaba + fastjson + ${fastjson} + + + javax.xml.bind + jaxb-api + ${jaxb-api} + com.quanxiaoha weblog-module-common diff --git a/weblog-springboot/weblog-module-admin/pom.xml b/weblog-springboot/weblog-module-admin/pom.xml index 6d59247..ae0909b 100644 --- a/weblog-springboot/weblog-module-admin/pom.xml +++ b/weblog-springboot/weblog-module-admin/pom.xml @@ -14,6 +14,20 @@ + + com.alibaba + fastjson + + + com.aliyun.oss + aliyun-sdk-oss + + + javax.xml.bind + jaxb-api + + + com.quanxiaoha weblog-module-common diff --git a/weblog-springboot/weblog-module-admin/src/main/java/com/quanxiaoha/weblog/admin/config/AliOssProperties.java b/weblog-springboot/weblog-module-admin/src/main/java/com/quanxiaoha/weblog/admin/config/AliOssProperties.java new file mode 100644 index 0000000..f072f65 --- /dev/null +++ b/weblog-springboot/weblog-module-admin/src/main/java/com/quanxiaoha/weblog/admin/config/AliOssProperties.java @@ -0,0 +1,18 @@ +package com.quanxiaoha.weblog.admin.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@ConfigurationProperties(prefix = "alioss") +@Data +public class AliOssProperties { + + private String endpoint; + private String accessKeyId; + private String accessKeySecret; + private String bucketName; + private String filePrefix; + +} diff --git a/weblog-springboot/weblog-module-admin/src/main/java/com/quanxiaoha/weblog/admin/config/OssConfiguration.java b/weblog-springboot/weblog-module-admin/src/main/java/com/quanxiaoha/weblog/admin/config/OssConfiguration.java new file mode 100644 index 0000000..46846ee --- /dev/null +++ b/weblog-springboot/weblog-module-admin/src/main/java/com/quanxiaoha/weblog/admin/config/OssConfiguration.java @@ -0,0 +1,26 @@ +package com.quanxiaoha.weblog.admin.config; + + +import com.quanxiaoha.weblog.admin.utils.AliOssUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * 配置类,创建AliOssUtil对象 + */ +@Configuration +@Slf4j +public class OssConfiguration { + @Bean + @ConditionalOnMissingBean + public AliOssUtil aliOssUti(AliOssProperties aliOssProperties) { + log.info("阿里云oss配置对象{}", aliOssProperties); + return new AliOssUtil(aliOssProperties.getEndpoint(), + aliOssProperties.getAccessKeyId(), + aliOssProperties.getAccessKeySecret(), + aliOssProperties.getBucketName(), + aliOssProperties.getFilePrefix()); + } +} diff --git a/weblog-springboot/weblog-module-admin/src/main/java/com/quanxiaoha/weblog/admin/service/impl/AdminFileServiceImpl.java b/weblog-springboot/weblog-module-admin/src/main/java/com/quanxiaoha/weblog/admin/service/impl/AdminFileServiceImpl.java index 72ef9b4..e252c60 100644 --- a/weblog-springboot/weblog-module-admin/src/main/java/com/quanxiaoha/weblog/admin/service/impl/AdminFileServiceImpl.java +++ b/weblog-springboot/weblog-module-admin/src/main/java/com/quanxiaoha/weblog/admin/service/impl/AdminFileServiceImpl.java @@ -1,7 +1,9 @@ package com.quanxiaoha.weblog.admin.service.impl; +import com.quanxiaoha.weblog.admin.config.AliOssProperties; import com.quanxiaoha.weblog.admin.model.vo.file.UploadFileRspVO; import com.quanxiaoha.weblog.admin.service.AdminFileService; +import com.quanxiaoha.weblog.admin.utils.AliOssUtil; import com.quanxiaoha.weblog.admin.utils.MinioUtil; import com.quanxiaoha.weblog.common.Response; import com.quanxiaoha.weblog.common.enums.ResponseCodeEnum; @@ -11,6 +13,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; +import java.util.UUID; + /** * @author: 犬小哈 * @url: www.quanxiaoha.com @@ -23,15 +27,33 @@ public class AdminFileServiceImpl implements AdminFileService { @Autowired private MinioUtil minioUtil; + @Autowired + private AliOssUtil aliOssUtil; @Override public Response uploadFile(MultipartFile file) { + String url = null; try { - String url = minioUtil.uploadFile(file); + String originalFilename = file.getOriginalFilename(); + String end = originalFilename.substring(originalFilename.lastIndexOf(".") + 1); + String fileName = UUID.randomUUID().toString() + "." + end; + byte[] image = file.getBytes(); + url = aliOssUtil.upload(image, fileName); return Response.success(UploadFileRspVO.builder().url(url).build()); } catch (Exception e) { log.error("==> 上传文件异常: ", e); throw new BizException(ResponseCodeEnum.UPLOAD_FILE_ERROR); } } + // @Override +// public Response uploadFile(MultipartFile file) { +// try { +// String url = minioUtil.uploadFile(file); +// return Response.success(UploadFileRspVO.builder().url(url).build()); +// } catch (Exception e) { +// log.error("==> 上传文件异常: ", e); +// throw new BizException(ResponseCodeEnum.UPLOAD_FILE_ERROR); +// } +// } + } diff --git a/weblog-springboot/weblog-module-admin/src/main/java/com/quanxiaoha/weblog/admin/utils/AliOssUtil.java b/weblog-springboot/weblog-module-admin/src/main/java/com/quanxiaoha/weblog/admin/utils/AliOssUtil.java new file mode 100644 index 0000000..1e2a272 --- /dev/null +++ b/weblog-springboot/weblog-module-admin/src/main/java/com/quanxiaoha/weblog/admin/utils/AliOssUtil.java @@ -0,0 +1,74 @@ +package com.quanxiaoha.weblog.admin.utils; + +import com.aliyun.oss.ClientException; +import com.aliyun.oss.OSS; +import com.aliyun.oss.OSSClientBuilder; +import com.aliyun.oss.OSSException; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; + +import java.io.ByteArrayInputStream; + +@Data +@AllArgsConstructor +@Slf4j + +public class AliOssUtil { + + private String endpoint; + private String accessKeyId; + private String accessKeySecret; + private String bucketName; + private String filePrefix; + + /** + * 文件上传 + * + * @param bytes + * @param objectName + * @return + */ + public String upload(byte[] bytes, String objectName) { + + // 创建OSSClient实例。 + OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); + //拼接文件夹名称 + String newObjectName = filePrefix + "/" + objectName; + try { + // 创建PutObject请求。 + ossClient.putObject(bucketName, newObjectName, new ByteArrayInputStream(bytes)); + } catch (OSSException oe) { + System.out.println("Caught an OSSException, which means your request made it to OSS, " + + "but was rejected with an error response for some reason."); + System.out.println("Error Message:" + oe.getErrorMessage()); + System.out.println("Error Code:" + oe.getErrorCode()); + System.out.println("Request ID:" + oe.getRequestId()); + System.out.println("Host ID:" + oe.getHostId()); + } catch (ClientException ce) { + System.out.println("Caught an ClientException, which means the client encountered " + + "a serious internal problem while trying to communicate with OSS, " + + "such as not being able to access the network."); + System.out.println("Error Message:" + ce.getMessage()); + } finally { + if (ossClient != null) { + ossClient.shutdown(); + } + } + + //文件访问路径规则 https://BucketName.Endpoint/ObjectName + StringBuilder stringBuilder = new StringBuilder("https://"); + stringBuilder + .append(bucketName) + .append(".") + .append(endpoint) + .append("/") + .append(filePrefix) + .append("/") + .append(objectName); + + log.info("文件上传到:{}", stringBuilder.toString()); + + return stringBuilder.toString(); + } +} diff --git a/weblog-springboot/weblog-web/src/main/resources/application.yaml b/weblog-springboot/weblog-web/src/main/resources/application.yaml index dcff4d8..e029376 100644 --- a/weblog-springboot/weblog-web/src/main/resources/application.yaml +++ b/weblog-springboot/weblog-web/src/main/resources/application.yaml @@ -40,4 +40,12 @@ minio: # IP归属地信息库文件路径 ip2region.xdb #================================================================= xdb: - profile: xxx \ No newline at end of file + profile: xxx + + +alioss: + endpoint: + accessKeyId: + accessKeySecret: + bucketName: + file-prefix: \ No newline at end of file -- Gitee