最近更新时间: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();
}
}
纯净模式
