签入版本

This commit is contained in:
2026-09-28 18:51:35 +08:00
commit ab0f064ea6
2692 changed files with 354751 additions and 0 deletions
+28
View File
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.xiaomayi</groupId>
<artifactId>xiaomayi-common</artifactId>
<version>${revision}</version>
</parent>
<artifactId>xiaomayi-oss</artifactId>
<!-- 依赖声明 -->
<dependencies>
<!-- 核心依赖模块 -->
<dependency>
<groupId>com.xiaomayi</groupId>
<artifactId>xiaomayi-core</artifactId>
</dependency>
<!-- 阿里云OSS云存储 -->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
</dependency>
</dependencies>
</project>
@@ -0,0 +1,234 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型,构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值:赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 【知识产权声明】
// | 1. 权属声明:本软件是受《中华人民共和国著作权法》
// | 保护的专有财产,完整版权归小蚂蚁云团队所有
// | 2. 权利范围:所有知识产权(商标、专利、著作权、
// | 商业秘密等)均归小蚂蚁云团队所有,受法律保护
// | 3. 授权性质:用户仅可获得有限的、非独占的使用许可
// | 4. 禁止行为:未经书面授权,禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留:未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 【授权状态说明】
// | 1. 未授权状态:用户未购买有效的商业许可证
// | 2. 商业授权:已购买正式商业许可证的用户
// +======================================================================
// | 【绝对禁止条款】
// | 无论授权状态如何,任何用户均严格禁止以下行为:
// | 1. 逆向工程:对软件进行反编译、反汇编、技术破解或任何形式的逆向分析
// | 2. 版权破坏:移除、修改、遮挡软件中的版权标识、许可控制或技术保护措施
// | 3. 非法传播:复制、分发、出租、出借、转售、再许可本软件或其许可权利
// | 4. 竞争性使用:利用本软件的代码、架构、设计开发直接竞争的产品或服务
// | 5. 侵权使用:将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 【商业授权许可范围】
// | 购买有效商业许可证的用户,在遵守上述禁止条款的前提下,获得:
// | 1. 使用权利:在许可证约定的项目数量、开发者数量范围内使用本软件
// | 2. 技术支持:商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新:在许可证有效期内获取软件更新、安全补丁和功能增强
// | 4. 商业部署:将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 【许可证获取】
// | 1. 获取途径:仅通过小蚂蚁云官方渠道购买(官网、授权代理商),购买记录凭证
// | 2. 转让限制:许可证与购买主体绑定,未经书面同意不得转让
// | 3. 终止情形:许可证到期、违反协议、破产清算等情况下自动终止
// +======================================================================
// | 【合法使用要求】
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法、侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 【免责声明】
// | 因使用本框架导致的以下情况,我们概不负责:
// | 1. 项目研发中的意外、疏忽、违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接、间接、附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 【协议重要提示】
// | 1. 本声明是《小蚂蚁云最终用户许可协议》的摘要版本
// | 2. 下载、安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利,修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本,继续使用视为接受修改
// +======================================================================
// | 【侵权举报与合规】
// | 1. 知识产权侵权举报:请联系官方客服
// | 2. 许可证合规咨询:xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议,我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.oss.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
/**
* <p>
* 阿里云OSS云存储配置类
* </p>
*
* @author 小蚂蚁云团队
* @since 2024-05-30
*/
@Configuration
// 指定配置文件位置
//@PropertySource(value = {"classpath:application-aliyun.yml"})
@ConfigurationProperties(prefix = "aliyun.oss")
public class AliyunOssConfig {
/**
* 存储空间名称
* 示例:yhzz-dev-nc
* 存储桶的唯一标识名称
*/
private static String bucketName;
/**
* OSS服务访问端点
* 示例:oss-cn-hangzhou.aliyuncs.com
* OSS服务的API访问地址
*/
private static String endpoint;
/**
* 地域标识
* 示例:oss-cn-hangzhou
* Bucket所在的地域代码
*/
private static String region;
/**
* 是否使用HTTPS安全连接
* true: 使用HTTPS加密传输
* false: 使用HTTP普通传输
*/
private static Boolean secure;
/**
* 请求超时时间(毫秒)
* 示例:600000 (10分钟)
* 网络请求的最大等待时间
*/
private static Long timeout;
/**
* 访问密钥ID
* 阿里云AccessKey的ID部分
* 用于标识用户身份
*/
private static String accessKeyId;
/**
* 访问密钥密钥
* 阿里云AccessKey的密钥部分
* 重要:需要妥善保管,避免泄露
*/
private static String accessKeySecret;
/**
* 绑定桶的访问域名
* 用于生成文件访问URL的完整域名地址,支持以下形式:
* <p>
* 1. 默认OSS域名格式:
* - HTTPS: https://{bucketName}.{endpoint}
* - HTTP: http://{bucketName}.{endpoint}
* 示例: https://yhzz-dev-nc.oss-cn-hangzhou.aliyuncs.com
* <p>
* 2. 自定义域名(推荐):
* - 需要在阿里云OSS控制台绑定自定义域名
* - 需要配置域名解析(CNAME记录)
* 示例: https://oss.yunheng.com
* <p>
* 3. CDN加速域名:
* - 通过CDN加速文件访问
* - 需要配置CDN域名和回源设置
* 示例: https://cdn.yunheng.com
* <p>
* 使用场景:
* - 文件上传后生成完整的访问链接
* - 前端页面直接显示图片、视频等文件
* - 文件分享和下载
* <p>
* 配置建议:
* - 生产环境建议使用自定义域名 + HTTPS
* - 如果secure=true,域名应以https://开头
* - 域名末尾不要包含斜杠(/)
*/
private static String domainUrl;
public static String getBucketName() {
return bucketName;
}
public void setBucketName(String bucketName) {
AliyunOssConfig.bucketName = bucketName;
}
public static String getEndpoint() {
return endpoint;
}
public void setEndpoint(String endpoint) {
AliyunOssConfig.endpoint = endpoint;
}
public static String getRegion() {
return region;
}
public void setRegion(String region) {
AliyunOssConfig.region = region;
}
public static Boolean getSecure() {
return secure;
}
public void setSecure(Boolean secure) {
AliyunOssConfig.secure = secure;
}
public static Long getTimeout() {
return timeout;
}
public void setTimeout(Long timeout) {
AliyunOssConfig.timeout = timeout;
}
public static String getAccessKeyId() {
return accessKeyId;
}
public void setAccessKeyId(String accessKeyId) {
AliyunOssConfig.accessKeyId = accessKeyId;
}
public static String getAccessKeySecret() {
return accessKeySecret;
}
public void setAccessKeySecret(String accessKeySecret) {
AliyunOssConfig.accessKeySecret = accessKeySecret;
}
public static String getDomainUrl() {
return domainUrl;
}
public void setDomainUrl(String domainUrl) {
AliyunOssConfig.domainUrl = domainUrl;
}
}
@@ -0,0 +1,452 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型,构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值:赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 【知识产权声明】
// | 1. 权属声明:本软件是受《中华人民共和国著作权法》
// | 保护的专有财产,完整版权归小蚂蚁云团队所有
// | 2. 权利范围:所有知识产权(商标、专利、著作权、
// | 商业秘密等)均归小蚂蚁云团队所有,受法律保护
// | 3. 授权性质:用户仅可获得有限的、非独占的使用许可
// | 4. 禁止行为:未经书面授权,禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留:未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 【授权状态说明】
// | 1. 未授权状态:用户未购买有效的商业许可证
// | 2. 商业授权:已购买正式商业许可证的用户
// +======================================================================
// | 【绝对禁止条款】
// | 无论授权状态如何,任何用户均严格禁止以下行为:
// | 1. 逆向工程:对软件进行反编译、反汇编、技术破解或任何形式的逆向分析
// | 2. 版权破坏:移除、修改、遮挡软件中的版权标识、许可控制或技术保护措施
// | 3. 非法传播:复制、分发、出租、出借、转售、再许可本软件或其许可权利
// | 4. 竞争性使用:利用本软件的代码、架构、设计开发直接竞争的产品或服务
// | 5. 侵权使用:将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 【商业授权许可范围】
// | 购买有效商业许可证的用户,在遵守上述禁止条款的前提下,获得:
// | 1. 使用权利:在许可证约定的项目数量、开发者数量范围内使用本软件
// | 2. 技术支持:商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新:在许可证有效期内获取软件更新、安全补丁和功能增强
// | 4. 商业部署:将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 【许可证获取】
// | 1. 获取途径:仅通过小蚂蚁云官方渠道购买(官网、授权代理商),购买记录凭证
// | 2. 转让限制:许可证与购买主体绑定,未经书面同意不得转让
// | 3. 终止情形:许可证到期、违反协议、破产清算等情况下自动终止
// +======================================================================
// | 【合法使用要求】
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法、侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 【免责声明】
// | 因使用本框架导致的以下情况,我们概不负责:
// | 1. 项目研发中的意外、疏忽、违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接、间接、附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 【协议重要提示】
// | 1. 本声明是《小蚂蚁云最终用户许可协议》的摘要版本
// | 2. 下载、安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利,修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本,继续使用视为接受修改
// +======================================================================
// | 【侵权举报与合规】
// | 1. 知识产权侵权举报:请联系官方客服
// | 2. 许可证合规咨询:xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议,我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.oss.utils;
import com.aliyun.oss.ClientBuilderConfiguration;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.common.comm.Protocol;
import com.aliyun.oss.model.OSSObject;
import com.aliyun.oss.model.ObjectMetadata;
import com.xiaomayi.core.utils.DateUtils;
import com.xiaomayi.core.utils.StringUtils;
import com.xiaomayi.oss.config.AliyunOssConfig;
import com.xiaomayi.oss.vo.AliyunOSSVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.net.URLEncoder;
/**
* <p>
* 阿里云OSS云存储工具类
* </p>
*
* @author 小蚂蚁云团队
* @since 2024-05-30
*/
@Slf4j
@Component
public class AliyunOSSUtil {
/**
* 允许文件上传后缀
*/
private static final String[] IMAGE_TYPE = new String[]{".bmp", ".jpg", ".jpeg", ".gif", ".png"};
/**
* 创建OSS连接实例
*
* @return 返回结果
*/
private static OSS getOssClient() {
// 获取oss的地域节点
String endpoint = AliyunOssConfig.getEndpoint();
// 获取oss的AccessKeySecret
String accessKeySecret = AliyunOssConfig.getAccessKeySecret();
// 获取oss的AccessKeyId
String accessKeyId = AliyunOssConfig.getAccessKeyId();
ClientBuilderConfiguration conf = new ClientBuilderConfiguration();
// 设置OSSClient允许打开的最大HTTP连接数,默认为1024个。
conf.setMaxConnections(200);
// 设置Socket层传输数据的超时时间,默认为50000毫秒。
conf.setSocketTimeout(10000);
// 设置建立连接的超时时间,默认为50000毫秒。
conf.setConnectionTimeout(10000);
// 设置从连接池中获取连接的超时时间(单位:毫秒),默认不超时。
conf.setConnectionRequestTimeout(1000);
// 设置连接空闲超时时间。超时则关闭连接,默认为60000毫秒。
conf.setIdleConnectionTime(10000);
// 设置失败请求重试次数,默认为3次。
conf.setMaxErrorRetry(5);
// 设置是否支持将自定义域名作为Endpoint,默认支持。
conf.setSupportCname(true);
// 设置是否开启二级域名的访问方式,默认不开启。
// conf.setSLDEnabled(true);
// 设置连接OSS所使用的协议(HTTP或HTTPS),默认为HTTP。
conf.setProtocol(Protocol.HTTPS);
// 设置用户代理,指HTTP的User-Agent头,默认为aliyun-sdk-java。
/*conf.setUserAgent("aliyun-sdk-java");
// 设置代理服务器端口。
conf.setProxyHost("<yourProxyHost>");
// 设置代理服务器验证的用户名。
conf.setProxyUsername("<yourProxyUserName>");
// 设置代理服务器验证的密码。
conf.setProxyPassword("<yourProxyPassword>");*/
// 设置是否开启HTTP重定向,默认开启。
conf.setRedirectEnable(true);
// 设置是否开启SSL证书校验,默认开启。
conf.setVerifySSLEnable(true);
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret, conf);
return ossClient;
}
/**
* 根据文件路径获取OSS访问地址
* 备注:需要对中文路径进行URL编码
*
* @param filePath 文件路径
* @return 返回结果
*/
public static String getFileURL(String filePath) {
// 地域节点
String endpoint = AliyunOssConfig.getEndpoint();
// 判断文件路径是否已包含
if (filePath.contains(endpoint)) {
// 直接返回
return filePath;
}
String encode = null;
try {
// 文件路径分裂处理
String[] strings = filePath.split("/");
// 获取文件路径和文件名
String lastIndex = strings[strings.length - 1];
// URL编码
lastIndex = URLEncoder.encode(lastIndex, "utf-8");
// 重新赋值
strings[strings.length - 1] = lastIndex;
// 数组重新已斜杠拼接
encode = String.join("/", strings);
} catch (UnsupportedEncodingException e) {
log.error("文件处理错误:{}", e.getMessage());
}
// 返回结果
return String.format("%s://%s/%s", Protocol.HTTPS, AliyunOssConfig.getEndpoint(), encode);
}
/**
* 上传文件
*
* @param uploadFile 文件对象
* @param folder 文件夹
* @param fileName 文件名
* @return 返回结果
*/
public static AliyunOSSVO upload(MultipartFile uploadFile, String folder, String fileName) {
// 获取OSS存储桶名称
String bucketName = AliyunOssConfig.getBucketName();
// 获取文件原名称
String originalFilename = uploadFile.getOriginalFilename();
// 构建日期路径, 例如:OSS目标文件夹/2024/05/30/文件名
// 文件上传的路径地址
String filePath = folder + "/" + fileName;
// 获取文件输入流
InputStream inputStream = null;
try {
inputStream = uploadFile.getInputStream();
} catch (IOException e) {
log.error("上传文件异常:{}", e.getMessage());
}
/*
* 下面两行代码是重点坑:
* 现在阿里云OSS 默认图片上传ContentType是image/jpeg
* 也就是说,获取图片链接后,图片是下载链接,而并非在线浏览链接,
* 因此,这里在上传的时候要解决ContentType的问题,将其改为image/jpg
*/
ObjectMetadata metadata = new ObjectMetadata();
for (String type : IMAGE_TYPE) {
if (StringUtils.endsWithIgnoreCase(uploadFile.getOriginalFilename(), type)) {
metadata.setContentType("image/jpg");
}
}
// 获取阿里云OSS实例
OSS ossClient = getOssClient();
// 文件上传至阿里云OSS
ossClient.putObject(bucketName, filePath, inputStream, metadata);
// 获取文件上传后的图片返回地址
String fileUrl = getFileURL(filePath);
// 实例化VO对象
AliyunOSSVO aliyunOSSVO = new AliyunOSSVO();
aliyunOSSVO.setFileName(originalFilename);
aliyunOSSVO.setFilePath(filePath);
aliyunOSSVO.setFileUrl(fileUrl);
// 返回结果
return aliyunOSSVO;
}
/**
* 上传文件至OSS
*
* @param filePath 文件完整路径
* @param folder 文件夹
* @param delFile 是否删除
* @return 返回结果
*/
public static AliyunOSSVO uploadWithOss(String filePath, String folder, Boolean delFile) {
// 实例化文件
File file = new File(filePath);
// 判断文件是否存在
if (!file.exists()) {
return null;
}
// 原始文件名
String fileName = file.getName();
// 获取OSS存储桶名称
String bucketName = AliyunOssConfig.getBucketName();
// 日期文件夹路径
String datePath = DateUtils.datePath();
// 准备上传OSS的文件路径和文件名
String objectName = folder + "/" + datePath + "/" + fileName;
// 实例化文件流
FileInputStream fileInputStream = null;
try {
// 根据文件创建文件流
fileInputStream = new FileInputStream(file);
// 获取OSS云存储实例
OSS ossClient = getOssClient();
// 文件上传至阿里云OSS
ossClient.putObject(bucketName, objectName, fileInputStream);
} catch (FileNotFoundException e) {
log.error("文件上传失败:{}", e.getMessage());
} finally {
try {
if (null != fileInputStream) {
// 关闭文件流
fileInputStream.close();
// 删除文件
if (delFile) {
file.delete();
}
}
} catch (IOException e) {
log.error("文件流关闭失败:{}", e.getMessage());
}
}
// 获取文件上传后的地址
String fileUrl = getFileURL(objectName);
// 实例化VO对象
AliyunOSSVO aliyunOSSVO = new AliyunOSSVO();
aliyunOSSVO.setFileName(fileName);
aliyunOSSVO.setFilePath(filePath);
aliyunOSSVO.setFileUrl(fileUrl);
// 返回结果
return aliyunOSSVO;
}
/**
* 上传文件流至OSS
*
* @param inputStream 文件流
* @param folder 文件夹
* @param fileName 文件名称
* @return 返回结果
*/
public static AliyunOSSVO uploadWithInputStream(InputStream inputStream, String folder, String fileName) {
// 获取OSS存储桶名称
String bucketName = AliyunOssConfig.getBucketName();
// 新文件名称
String filePath = String.format("%s/%s/%s", folder, DateUtils.datePath(), fileName);
try {
// 获取OSS存储实例
OSS ossClient = getOssClient();
// 文件上传至阿里云OSS
ossClient.putObject(bucketName, filePath, inputStream);
} catch (OSSException oe) {
log.error("文件上传失败:{}", oe.getMessage());
} finally {
try {
if (null != inputStream) {
// 关闭文件流
inputStream.close();
}
} catch (IOException e) {
log.error("文件流关闭失败:{}", e.getMessage());
}
}
// 获取文件上传后的地址
String fileUrl = getFileURL(filePath);
// 实例化VO对象
AliyunOSSVO aliyunOSSVO = new AliyunOSSVO();
aliyunOSSVO.setFileName(fileName);
aliyunOSSVO.setFilePath(filePath);
aliyunOSSVO.setFileUrl(fileUrl);
// 返回结果
return aliyunOSSVO;
}
/**
* 下载远程OSS文件至本地
*
* @param filePath OSS文件路径
* @param newFile 目标文件
*/
public static void writeLocalFile(String filePath, String newFile) {
try {
// 实例化目标文件
File destFile = new File(newFile);
// 创建目录
if (destFile.getParentFile().exists()) {
destFile.getParentFile().mkdirs();
}
// 实例化OSS客户端实例
OSS ossClient = getOssClient();
// 获取OSS云存储桶名称
String bucketName = AliyunOssConfig.getBucketName();
// 根据存储桶名称、文件路径获取OSS文件对象
OSSObject ossObject = ossClient.getObject(bucketName, filePath);
// 读取文件内容
InputStream inputStream = ossObject.getObjectContent();
if (null != inputStream) {
// 把输入流放入缓存流
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
// 实例化目标文件流
FileOutputStream fileOutputStream = new FileOutputStream(newFile);
// 把输出流放入缓存流
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
byte[] buffer = new byte[1024];
int len = 0;
while ((len = bufferedInputStream.read(buffer)) != -1) {
bufferedOutputStream.write(buffer, 0, len);
}
bufferedOutputStream.flush();
bufferedOutputStream.close();
bufferedInputStream.close();
}
} catch (Exception e) {
log.error("文件写入本地失败:{}", e.getMessage());
}
}
/**
* 删除OSS文件
*
* @param filePath OSS文件路径
* @return 返回结果
*/
public static Boolean delete(String filePath) {
try {
// 获取OSS云存储实例
OSS ossClient = getOssClient();
// 获取OSS云存储桶名称
String bucketName = AliyunOssConfig.getBucketName();
// 从OSS存储桶中删除指定文件
ossClient.deleteObject(bucketName, filePath);
// 返回结果
return true;
} catch (Exception e) {
log.error("删除文件失败:{}", e.getMessage());
// 返回结果
return false;
}
}
/**
* OSS云存储文件拷贝
*
* @param oldFilePath 原文件
* @param destFilePath 目标文件
* @return 返回结果
*/
public static boolean copyFile(String oldFilePath, String destFilePath) {
// 原文件判空
if (StringUtils.isEmpty(oldFilePath)) {
return false;
}
// 目标文件判空
if (StringUtils.isEmpty(destFilePath)) {
return false;
}
try {
// 获取OSS云存储桶名称
String bucketName = AliyunOssConfig.getBucketName();
// 获取OSS云存储客户端实例
OSS ossClient = getOssClient();
// 判断存储桶中是否次存在原文件
if (ossClient.doesObjectExist(bucketName, oldFilePath)) {
// 从存储桶A拷贝文件A至存储桶B文件B
ossClient.copyObject(bucketName, oldFilePath, bucketName, destFilePath);
}
return true;
} catch (OSSException e) {
log.error("文件拷贝失败:{}", e.getMessage());
}
return false;
}
}
@@ -0,0 +1,102 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型,构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值:赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 【知识产权声明】
// | 1. 权属声明:本软件是受《中华人民共和国著作权法》
// | 保护的专有财产,完整版权归小蚂蚁云团队所有
// | 2. 权利范围:所有知识产权(商标、专利、著作权、
// | 商业秘密等)均归小蚂蚁云团队所有,受法律保护
// | 3. 授权性质:用户仅可获得有限的、非独占的使用许可
// | 4. 禁止行为:未经书面授权,禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留:未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 【授权状态说明】
// | 1. 未授权状态:用户未购买有效的商业许可证
// | 2. 商业授权:已购买正式商业许可证的用户
// +======================================================================
// | 【绝对禁止条款】
// | 无论授权状态如何,任何用户均严格禁止以下行为:
// | 1. 逆向工程:对软件进行反编译、反汇编、技术破解或任何形式的逆向分析
// | 2. 版权破坏:移除、修改、遮挡软件中的版权标识、许可控制或技术保护措施
// | 3. 非法传播:复制、分发、出租、出借、转售、再许可本软件或其许可权利
// | 4. 竞争性使用:利用本软件的代码、架构、设计开发直接竞争的产品或服务
// | 5. 侵权使用:将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 【商业授权许可范围】
// | 购买有效商业许可证的用户,在遵守上述禁止条款的前提下,获得:
// | 1. 使用权利:在许可证约定的项目数量、开发者数量范围内使用本软件
// | 2. 技术支持:商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新:在许可证有效期内获取软件更新、安全补丁和功能增强
// | 4. 商业部署:将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 【许可证获取】
// | 1. 获取途径:仅通过小蚂蚁云官方渠道购买(官网、授权代理商),购买记录凭证
// | 2. 转让限制:许可证与购买主体绑定,未经书面同意不得转让
// | 3. 终止情形:许可证到期、违反协议、破产清算等情况下自动终止
// +======================================================================
// | 【合法使用要求】
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法、侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 【免责声明】
// | 因使用本框架导致的以下情况,我们概不负责:
// | 1. 项目研发中的意外、疏忽、违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接、间接、附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 【协议重要提示】
// | 1. 本声明是《小蚂蚁云最终用户许可协议》的摘要版本
// | 2. 下载、安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利,修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本,继续使用视为接受修改
// +======================================================================
// | 【侵权举报与合规】
// | 1. 知识产权侵权举报:请联系官方客服
// | 2. 许可证合规咨询:xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议,我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.oss.vo;
import lombok.Data;
/**
* <p>
* 阿里云OSS云存储返回VO
* </p>
*
* @author 小蚂蚁云团队
* @since 2024-05-30
*/
@Data
public class AliyunOSSVO {
/**
* 文件名称
*/
private String fileName;
/**
* 文件路径,上传OSS后返回的文件路径
*/
private String filePath;
/**
* 文件URL
*/
private String fileUrl;
}
@@ -0,0 +1,166 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型,构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值:赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 【知识产权声明】
// | 1. 权属声明:本软件是受《中华人民共和国著作权法》
// | 保护的专有财产,完整版权归小蚂蚁云团队所有
// | 2. 权利范围:所有知识产权(商标、专利、著作权、
// | 商业秘密等)均归小蚂蚁云团队所有,受法律保护
// | 3. 授权性质:用户仅可获得有限的、非独占的使用许可
// | 4. 禁止行为:未经书面授权,禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留:未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 【授权状态说明】
// | 1. 未授权状态:用户未购买有效的商业许可证
// | 2. 商业授权:已购买正式商业许可证的用户
// +======================================================================
// | 【绝对禁止条款】
// | 无论授权状态如何,任何用户均严格禁止以下行为:
// | 1. 逆向工程:对软件进行反编译、反汇编、技术破解或任何形式的逆向分析
// | 2. 版权破坏:移除、修改、遮挡软件中的版权标识、许可控制或技术保护措施
// | 3. 非法传播:复制、分发、出租、出借、转售、再许可本软件或其许可权利
// | 4. 竞争性使用:利用本软件的代码、架构、设计开发直接竞争的产品或服务
// | 5. 侵权使用:将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 【商业授权许可范围】
// | 购买有效商业许可证的用户,在遵守上述禁止条款的前提下,获得:
// | 1. 使用权利:在许可证约定的项目数量、开发者数量范围内使用本软件
// | 2. 技术支持:商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新:在许可证有效期内获取软件更新、安全补丁和功能增强
// | 4. 商业部署:将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 【许可证获取】
// | 1. 获取途径:仅通过小蚂蚁云官方渠道购买(官网、授权代理商),购买记录凭证
// | 2. 转让限制:许可证与购买主体绑定,未经书面同意不得转让
// | 3. 终止情形:许可证到期、违反协议、破产清算等情况下自动终止
// +======================================================================
// | 【合法使用要求】
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法、侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 【免责声明】
// | 因使用本框架导致的以下情况,我们概不负责:
// | 1. 项目研发中的意外、疏忽、违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接、间接、附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 【协议重要提示】
// | 1. 本声明是《小蚂蚁云最终用户许可协议》的摘要版本
// | 2. 下载、安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利,修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本,继续使用视为接受修改
// +======================================================================
// | 【侵权举报与合规】
// | 1. 知识产权侵权举报:请联系官方客服
// | 2. 许可证合规咨询:xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议,我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.oss.vo;
import lombok.Data;
/**
* 阿里云OSS配置值对象
* 用于封装云存储服务的配置信息
*
* @author 小蚂蚁云团队
* @since 2024-05-30
*/
@Data
public class AliyunOssConfigVO {
/**
* 存储空间名称
* 示例:yhzz-dev-nc
* 存储桶的唯一标识名称
*/
private String bucketName;
/**
* OSS服务访问端点
* 示例:oss-cn-hangzhou.aliyuncs.com
* OSS服务的API访问地址
*/
private String endpoint;
/**
* 地域标识
* 示例:oss-cn-hangzhou
* Bucket所在的地域代码
*/
private String region;
/**
* 是否使用HTTPS安全连接
* true: 使用HTTPS加密传输
* false: 使用HTTP普通传输
*/
private Boolean secure = true;
/**
* 请求超时时间(毫秒)
* 示例:600000 (10分钟)
* 网络请求的最大等待时间
*/
private Long timeout = 600000L;
/**
* 访问密钥ID
* 阿里云AccessKey的ID部分
* 用于标识用户身份
*/
private String accessKeyId;
/**
* 访问密钥密钥
* 阿里云AccessKey的密钥部分
* 重要:需要妥善保管,避免泄露
*/
private String accessKeySecret;
/**
* 绑定桶的访问域名
* 用于生成文件访问URL的完整域名地址,支持以下形式:
* <p>
* 1. 默认OSS域名格式:
* - HTTPS: https://{bucketName}.{endpoint}
* - HTTP: http://{bucketName}.{endpoint}
* 示例: https://yhzz-dev-nc.oss-cn-hangzhou.aliyuncs.com
* <p>
* 2. 自定义域名(推荐):
* - 需要在阿里云OSS控制台绑定自定义域名
* - 需要配置域名解析(CNAME记录)
* 示例: https://oss.yunheng.com
* <p>
* 3. CDN加速域名:
* - 通过CDN加速文件访问
* - 需要配置CDN域名和回源设置
* 示例: https://cdn.yunheng.com
* <p>
* 使用场景:
* - 文件上传后生成完整的访问链接
* - 前端页面直接显示图片、视频等文件
* - 文件分享和下载
* <p>
* 配置建议:
* - 生产环境建议使用自定义域名 + HTTPS
* - 如果secure=true,域名应以https://开头
* - 域名末尾不要包含斜杠(/)
*/
private String domainUrl;
}