全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

在线解压(Java)

最近更新时间:2026-11-03 19:37:39

KS3支持在线解压功能,即直接上传压缩包,上传后按照解压规则自动解压。详情请参见文档:在线解压。

设置在线解压策略

如下所示为设置在线解压策略示例:

public void putBucketDecompressPolicy() {
    // 初始化 Ks3Client,参见“初始化”文档
    Ks3Client ks3Client = initKs3Client();

    try {
        // 初始化解压策略
        BucketDecompressPolicy decompressPolicy = new BucketDecompressPolicy();
        List<BucketDecompressPolicy.Rule> rules = new ArrayList<>();
        BucketDecompressPolicy.Rule rule = new BucketDecompressPolicy.Rule();
        // 设置解压策略规则 id,要求唯一
        rule.setId("ruleId");
        // 设置解压策略规则事件,支持 ObjectCreated:*,ObjectCreated:Put,ObjectCreated:Post,ObjectCreated:Copy,ObjectCreated:CompleteMultipartUpload
        rule.setEvents("ObjectCreated:*");
        // 设置解压策略规则前缀,只有符合前缀的对象才会触发解压策略
        rule.setPrefix("my_prefix/");
        // 设置解压策略规则后缀,只有符合后缀的对象才会触发解压策略
        rule.setSuffix(Arrays.asList(".zip"));
        // 设置是否覆盖已存在的对象,支持 SKIP_IF_EXISTS(不覆盖),OVERWRITE_IF_EXISTS(覆盖)
        rule.setOverwrite(BucketDecompressPolicy.OverwritePolicy.SKIP_IF_EXISTS);
        // 设置解压后文件的 ACL,支持 private(私密)、public-read(公开读),不设置则默认为私密
        rule.setAcl("public-read");
        // 设置解压文件的存储类型,不设置则默认为标准存储
        rule.setStorageClass("DEEP_IA");
        // 设置解压文件的加密算法,支持 AES256、SM4,不设置则默认跟随桶的加密算法
        rule.setServerSideEncryption("AES256");
        // 设置解压后回调地址
        rule.setCallback("http://callback.url");
        // 设置解压后回调格式,支持 JSON,当设置了 callback 时,此项必填
        rule.setCallbackFormat("JSON");
        // 设置解压后的对象存储路径前缀
        rule.setPathPrefix("save_to_path/");
        /*
         * 设置解压后的对象存储路径前缀替换策略
         * 支持以下取值:
         * KEEP_COMPRESSED_PATH(0):保留压缩包全路径(去掉后缀),即 pathPrefix + 压缩包所在目录 +  压缩包名称
         * KEEP_PATH_PREFIX_ONLY(1):直接解压到目标目录,即 pathPrefix
         * KEEP_COMPRESSED_FILENAME(2):保留压缩包名称(不带后缀),即 pathPrefix + 压缩包名称
         *
         * 例如:
         * 压缩包是 my_prefix/test.zip,压缩包内有 a.txt,test/b.txt
         * pathPrefix 是 save_to_path/,
         * 若 pathPrefixReplaced 是 KEEP_COMPRESSED_PATH,则解压后的文件路径是 save_to_path/my_prefix/test/a.txt,save_to_path/my_prefix/test/test/b.txt
         * 若 pathPrefixReplaced 是 KEEP_PATH_PREFIX_ONLY,则解压后的文件路径是 save_to_path/a.txt,save_to_path/test/b.txt
         * 若 pathPrefixReplaced 是 KEEP_COMPRESSED_FILENAME,则解压后的文件路径是 save_to_path/test/a.txt,save_to_path/test/test/b.txt
         */
        rule.setPathPrefixReplaced(BucketDecompressPolicy.PathPrefixPolicy.KEEP_COMPRESSED_PATH);
        rules.add(rule);
        decompressPolicy.setRules(rules);
        // 发起请求,设置存储空间的解压策略
        ks3Client.putBucketDecompressPolicy("bucketName", decompressPolicy);
    } catch (Ks3ServiceException e) {
        System.out.println("Ks3ServiceException occurred, which means the request was made to KS3, but KS3 returned an error response for some reason.");
        System.out.println("Error Message: " + e.getErrorMessage());
        System.out.println("Error Code: " + e.getErrorCode());
        System.out.println("Request ID: " + e.getRequestId());
    } catch (Ks3ClientException e) {
        System.out.println("Ks3ClientException occurred, which means the client encountered an internal error while trying to communicate with KS3.");
        System.out.println("Error Message: " + e.getMessage());
    } finally {
        // 不再使用时,关闭 Ks3Client
        ks3Client.shutdown();
    }
}

获取在线解压策略

如下所示为获取在线解压策略示例:

public void getBucketDecompressPolicy() {
    // 初始化 Ks3Client,参见“初始化”文档
    Ks3Client ks3Client = initKs3Client();
    try {
        // 获取存储空间的解压策略
        BucketDecompressPolicy bucketDecompressPolicy = ks3Client.getBucketDecompressPolicy("bucketName");
        for (BucketDecompressPolicy.Rule rule : bucketDecompressPolicy.getRules()) {
            System.out.println("Rule ID: " + rule.getId());
            System.out.println("Rule Events: " + rule.getEvents());
            System.out.println("Rule Prefix: " + rule.getPrefix());
            System.out.println("Rule Suffix: " + rule.getSuffix());
            System.out.println("Rule Overwrite: " + rule.getOverwrite());
            System.out.println("Rule ACL: " + rule.getAcl());
            System.out.println("Rule StorageClass: " + rule.getStorageClass());
            System.out.println("Rule ServerSideEncryption: " + rule.getServerSideEncryption());
            System.out.println("Rule Callback: " + rule.getCallback());
            System.out.println("Rule Callback Format: " + rule.getCallbackFormat());
            System.out.println("Rule Path Prefix: " + rule.getPathPrefix());
            System.out.println("Rule Path Prefix Replaced: " + rule.getPathPrefixReplaced());
            System.out.println("--------------------");
        }
    } catch (Ks3ServiceException e) {
        System.out.println("Ks3ServiceException occurred, which means the request was made to KS3, but KS3 returned an error response for some reason.");
        System.out.println("Error Message: " + e.getErrorMessage());
        System.out.println("Error Code: " + e.getErrorCode());
        System.out.println("Request ID: " + e.getRequestId());
    } catch (Ks3ClientException e) {
        System.out.println("Ks3ClientException occurred, which means the client encountered an internal error while trying to communicate with KS3.");
        System.out.println("Error Message: " + e.getMessage());
    } finally {
        // 不再使用时,关闭 Ks3Client
        ks3Client.shutdown();
    }
}

删除在线解压策略

如下所示为删除在线解压策略示例:

public void deleteBucketDecompressPolicy() {
    // 初始化 Ks3Client,参见“初始化”文档
    Ks3Client ks3Client = initKs3Client();

    try {
        // 发起删除存储空间的解压策略请求
        ks3Client.deleteBucketDecompressPolicy("bucketName");
    } catch (Ks3ServiceException e) {
        System.out.println("Ks3ServiceException occurred, which means the request was made to KS3, but KS3 returned an error response for some reason.");
        System.out.println("Error Message: " + e.getErrorMessage());
        System.out.println("Error Code: " + e.getErrorCode());
        System.out.println("Request ID: " + e.getRequestId());
    } catch (Ks3ClientException e) {
        System.out.println("Ks3ClientException occurred, which means the client encountered an internal error while trying to communicate with KS3.");
        System.out.println("Error Message: " + e.getMessage());
    } finally {
        // 不再使用时,关闭 Ks3Client
        ks3Client.shutdown();
    }
}
文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈