diff --git a/weblog-springboot/pom.xml b/weblog-springboot/pom.xml index c40c7615e82e67a9d59028c0f1bd4e8fb6e21d15..28ac1fece3640832e9c68bb655682d863874b888 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 6d592476215572b97953a2f73ea4044dbe5fd316..ae0909ba73497d3d3e902f763bf30b7fb929b89b 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 0000000000000000000000000000000000000000..f072f654fc74befaeb69970f75fc9e2b56408588 --- /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 0000000000000000000000000000000000000000..46846ee8e2707976a10e1cab61bc9882f0fa9d17 --- /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 72ef9b4b1e954c05c1683850cc243790a7564c55..e252c60cd8ed66f903403370681018be3b163d8a 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 0000000000000000000000000000000000000000..1e2a272adfb5a45f29ae020837d1586c833c5f57 --- /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 dcff4d85b6281d425de53444fc780ff7a05cb31c..e0293766c1ee82c5b4525509253c3c493038b442 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