Skip to content

AnySDK-OSS 使用示例

本文档展示如何使用 AnySDK-OSS 系统进行不同 OSS 服务之间的切换和文件操作。

1. 示例代码

java
import cn.com.anysdk.oss.*;
import cn.com.anysdk.oss.config.*;
import cn.com.anysdk.oss.exception.*;

public class OssExample {
    private static final Logger logger = LoggerFactory.getLogger(OssExample.class);
    private IOssService ossService;

    public void runExample() {
        try {
            // 1. 首先使用本地文件系统作为 OSS 服务
            setupLocalFileSystem();
            uploadToLocalFileSystem();

            // 2. 切换到阿里云 OSS 服务
            switchToAliyunOss();
            uploadToAliyunOss();
        } catch (OssException e) {
            logger.error("OSS 操作失败", e);
        }
    }

    private void setupLocalFileSystem() {
        // 配置本地文件系统
        IOssConfig localConfig = new LocalFileSystemConfig()
            .setBasePath("/tmp/anysdk-oss-example")
            .setPublicEndpoint("http://localhost:8080/files")
            .setPrivateEndpoint("http://localhost:8080/private/files");

        // 创建本地文件系统 OSS 服务
        ossService = OssServiceFactory.createOssService(localConfig, OssProvider.LOCAL);
        logger.info("已初始化本地文件系统 OSS 服务");
    }

    private void uploadToLocalFileSystem() {
        try {
            // 创建测试文件
            File testFile = createTestFile("local-test.txt", "这是本地文件系统测试内容");

            // 上传到本地文件系统
            String url = ossService.uploadFile(
                testFile,
                "local/test.txt",
                UploadOptions.publicFile()
            );

            logger.info("文件已上传到本地文件系统,访问URL: {}", url);

            // 验证文件是否存在
            boolean exists = ossService.exists("local/test.txt");
            logger.info("文件在本地文件系统中是否存在: {}", exists);

        } catch (IOException e) {
            logger.error("创建测试文件失败", e);
        }
    }

    private void switchToAliyunOss() {
        // 配置阿里云 OSS
        IOssConfig aliyunConfig = new AliyunOssConfig()
            .setAccessKeyId("your-access-key-id")
            .setAccessKeySecret("your-access-key-secret")
            .setBucketName("your-bucket-name")
            .setPublicEndpoint("oss-cn-hangzhou.aliyuncs.com")
            .setPrivateEndpoint("oss-cn-hangzhou-internal.aliyuncs.com");

        // 切换到阿里云 OSS 服务
        ossService = OssServiceFactory.createOssService(aliyunConfig, OssProvider.ALIYUN);
        logger.info("已切换到阿里云 OSS 服务");
    }

    private void uploadToAliyunOss() {
        try {
            // 1. 上传公开文件
            File publicFile = createTestFile("public-test.txt", "这是阿里云 OSS 公开文件测试内容");
            String publicUrl = ossService.uploadFile(
                publicFile,
                "public/test.txt",
                UploadOptions.publicFile()
            );
            logger.info("公开文件已上传到阿里云 OSS,访问URL: {}", publicUrl);

            // 2. 上传私有文件
            File privateFile = createTestFile("private-test.txt", "这是阿里云 OSS 私有文件测试内容");
            String privateUrl = ossService.uploadFile(
                privateFile,
                "private/test.txt",
                UploadOptions.privateFile(3600L) // 1小时过期
            );
            logger.info("私有文件已上传到阿里云 OSS,访问URL: {}", privateUrl);

            // 3. 验证文件访问
            // 公开文件可以直接访问
            String publicFileUrl = ossService.getFileUrl("public/test.txt", null);
            logger.info("公开文件永久访问URL: {}", publicFileUrl);

            // 私有文件需要带过期时间的访问URL
            String privateFileUrl = ossService.getFileUrl("private/test.txt", 3600L);
            logger.info("私有文件临时访问URL: {}", privateFileUrl);

        } catch (IOException e) {
            logger.error("创建测试文件失败", e);
        }
    }

    private File createTestFile(String fileName, String content) throws IOException {
        File file = new File(fileName);
        Files.write(file.toPath(), content.getBytes(StandardCharsets.UTF_8));
        return file;
    }
}

Released under the MIT License.