diff --git a/yami-shop-common/src/main/java/com/yami/shop/common/config/FileUploadConfig.java b/yami-shop-common/src/main/java/com/yami/shop/common/config/FileUploadConfig.java new file mode 100644 index 0000000..d680318 --- /dev/null +++ b/yami-shop-common/src/main/java/com/yami/shop/common/config/FileUploadConfig.java @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved. + * + * https://www.mall4j.com/ + * + * 未经允许,不可做商业用途! + * + * 版权所有,侵权必究! + */ + +package com.yami.shop.common.config; + +// 导入相关的自定义类,可能用于存储图片上传相关的配置、枚举等信息 +import com.yami.shop.common.bean.ImgUpload; +import com.yami.shop.common.enums.QiniuZone; +// 导入Spring的注解相关类,用于实现依赖注入和配置相关功能 +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +// 导入七牛云相关的类,用于与七牛云存储服务进行交互,涉及区域、上传管理、认证等功能 +import com.qiniu.common.Zone; +import com.qiniu.storage.BucketManager; +import com.qiniu.storage.UploadManager; +import com.qiniu.util.Auth; +import com.yami.shop.common.bean.Qiniu; + +import java.util.Objects; + +/** + * 文件上传配置类,主要用于整合七牛云存储相关的配置与实例创建, + * 通过依赖注入获取配置信息,并根据配置来构建七牛云存储操作所需的各种实例, + * 如存储配置、上传管理实例、认证实例以及空间管理实例等,方便在项目中进行文件上传等操作。 + * @author lgh + */ +@Configuration +public class FileUploadConfig { + + // 通过Spring的依赖注入,获取Qiniu类型的配置对象,该对象应该包含了七牛云相关的配置信息,如密钥、机房区域等 + @Autowired + private Qiniu qiniu; + + /** + * 根据配置文件选择机房,创建七牛云存储的配置实例(com.qiniu.storage.Configuration)。 + * 会根据注入的Qiniu对象中的机房区域配置(QiniuZone枚举类型)来确定对应的七牛云机房区域(Zone), + * 并以此构建七牛云存储配置实例,该实例后续会被其他七牛云相关操作的实例所使用。 + * + * @return com.qiniu.storage.Configuration 返回构建好的七牛云存储配置实例,包含了指定的机房区域信息。 + */ + @Bean + public com.qiniu.storage.Configuration qiniuConfig() { + Zone zone = null; + // 判断配置中的机房区域是否为华北区,如果是则设置对应的七牛云机房区域为华北区(Zone.huabei()) + if (Objects.equals(qiniu.getZone(), QiniuZone.HUA_BEI)) { + zone = Zone.huabei(); + } + // 判断是否为华东区,若是则设置对应的七牛云机房区域为华东区(Zone.huadong()) + else if (Objects.equals(qiniu.getZone(), QiniuZone.HUA_DONG)) { + zone = Zone.huadong(); + } + // 判断是否为华南区,若是则设置对应的七牛云机房区域为华南区(Zone.huanan()) + else if (Objects.equals(qiniu.getZone(), QiniuZone.HUA_NAN)) { + zone = Zone.huanan(); + } + // 判断是否为北美区,若是则设置对应的七牛云机房区域为北美区(Zone.beimei()) + else if (Objects.equals(qiniu.getZone(), QiniuZone.BEI_MEI)) { + zone = Zone.beimei(); + } + // 判断是否为新加坡区,若是则设置对应的七牛云机房区域为新加坡区(Zone.xinjiapo()) + else if (Objects.equals(qiniu.getZone(), QiniuZone.XIN_JIA_PO)) { + zone = Zone.xinjiapo(); + } + // 使用确定好的机房区域(zone)构建七牛云存储配置实例并返回 + return new com.qiniu.storage.Configuration(zone); + } + + /** + * 构建一个七牛上传工具实例(UploadManager), + * 该实例依赖于前面创建的七牛云存储配置实例(qiniuConfig方法创建的com.qiniu.storage.Configuration实例), + * 用于在项目中执行文件上传到七牛云存储的操作。 + * + * @return UploadManager 返回构建好的七牛上传工具实例,可用于文件上传操作。 + */ + @Bean + public UploadManager uploadManager() { + return new UploadManager(qiniuConfig()); + } + + /** + * 构建七牛云认证信息实例(Auth), + * 通过获取注入的Qiniu对象中的访问密钥(accessKey)和秘密密钥(secretKey)来创建认证实例, + * 该认证实例在后续与七牛云服务进行交互时(如上传、管理空间等操作)用于验证身份,确保操作的合法性。 + * + * @return Auth 返回构建好的七牛云认证信息实例,包含了访问密钥和秘密密钥信息用于认证。 + */ + @Bean + public Auth auth() { + return Auth.create(qiniu.getAccessKey(), qiniu.getSecretKey()); + } + + /** + * 构建七牛空间管理实例(BucketManager), + * 该实例依赖于前面创建的认证信息实例(auth方法创建的Auth实例)和七牛云存储配置实例(qiniuConfig方法创建的实例), + * 用于在七牛云存储中进行空间相关的管理操作,比如查看、删除、移动文件等操作。 + * + * @return BucketManager 返回构建好的七牛空间管理实例,可用于七牛云存储空间的管理操作。 + */ + @Bean + public BucketManager bucketManager() { + return new BucketManager(auth(), qiniuConfig()); + } +} \ No newline at end of file