package com.iailab.module.infra.framework.file.core.s3; import cn.hutool.core.io.resource.ResourceUtil; import cn.hutool.core.util.IdUtil; import com.iailab.framework.common.util.validation.ValidationUtils; import com.iailab.module.infra.framework.file.core.client.s3.S3FileClient; import com.iailab.module.infra.framework.file.core.client.s3.S3FileClientConfig; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import javax.validation.Validation; public class S3FileClientTest { @Test @Disabled // MinIO,如果要集成测试,可以注释本行 public void testMinIO() throws Exception { S3FileClientConfig config = new S3FileClientConfig(); // 配置成你自己的 config.setAccessKey("admin"); config.setAccessSecret("password"); config.setBucket("iailabyuanma"); config.setDomain(null); // 默认 9000 endpoint config.setEndpoint("http://127.0.0.1:9000"); // 执行上传 testExecuteUpload(config); } @Test @Disabled // 阿里云 OSS,如果要集成测试,可以注释本行 public void testAliyun() throws Exception { S3FileClientConfig config = new S3FileClientConfig(); // 配置成你自己的 config.setAccessKey(System.getenv("ALIYUN_ACCESS_KEY")); config.setAccessSecret(System.getenv("ALIYUN_SECRET_KEY")); config.setBucket("yunai-aoteman"); config.setDomain(null); // 如果有自定义域名,则可以设置。http://ali-oss.iocoder.cn // 默认北京的 endpoint config.setEndpoint("oss-cn-beijing.aliyuncs.com"); // 执行上传 testExecuteUpload(config); } @Test @Disabled // 腾讯云 COS,如果要集成测试,可以注释本行 public void testQCloud() throws Exception { S3FileClientConfig config = new S3FileClientConfig(); // 配置成你自己的 config.setAccessKey(System.getenv("QCLOUD_ACCESS_KEY")); config.setAccessSecret(System.getenv("QCLOUD_SECRET_KEY")); config.setBucket("aoteman-1255880240"); config.setDomain(null); // 如果有自定义域名,则可以设置。http://tengxun-oss.iocoder.cn // 默认上海的 endpoint config.setEndpoint("cos.ap-shanghai.myqcloud.com"); // 执行上传 testExecuteUpload(config); } @Test @Disabled // 七牛云存储,如果要集成测试,可以注释本行 public void testQiniu() throws Exception { S3FileClientConfig config = new S3FileClientConfig(); // 配置成你自己的 // config.setAccessKey(System.getenv("QINIU_ACCESS_KEY")); // config.setAccessSecret(System.getenv("QINIU_SECRET_KEY")); config.setAccessKey("b7yvuhBSAGjmtPhMFcn9iMOxUOY_I06cA_p0ZUx8"); config.setAccessSecret("kXM1l5ia1RvSX3QaOEcwI3RLz3Y2rmNszWonKZtP"); config.setBucket("ruoyi-vue-pro"); config.setDomain("http://test.iailab.iocoder.cn"); // 如果有自定义域名,则可以设置。http://static.iailab.iocoder.cn // 默认上海的 endpoint config.setEndpoint("s3-cn-south-1.qiniucs.com"); // 执行上传 testExecuteUpload(config); } @Test @Disabled // 华为云存储,如果要集成测试,可以注释本行 public void testHuaweiCloud() throws Exception { S3FileClientConfig config = new S3FileClientConfig(); // 配置成你自己的 // config.setAccessKey(System.getenv("HUAWEI_CLOUD_ACCESS_KEY")); // config.setAccessSecret(System.getenv("HUAWEI_CLOUD_SECRET_KEY")); config.setBucket("iailab"); config.setDomain(null); // 如果有自定义域名,则可以设置。 // 默认上海的 endpoint config.setEndpoint("obs.cn-east-3.myhuaweicloud.com"); // 执行上传 testExecuteUpload(config); } private void testExecuteUpload(S3FileClientConfig config) throws Exception { // 校验配置 ValidationUtils.validate(Validation.buildDefaultValidatorFactory().getValidator(), config); // 创建 Client S3FileClient client = new S3FileClient(0L, config); client.init(); // 上传文件 String path = IdUtil.fastSimpleUUID() + ".jpg"; byte[] content = ResourceUtil.readBytes("file/erweima.jpg"); String fullPath = client.upload(content, path, "image/jpeg"); System.out.println("访问地址:" + fullPath); // 读取文件 if (true) { byte[] bytes = client.getContent(path); System.out.println("文件内容:" + bytes.length); } // 删除文件 if (false) { client.delete(path); } } }