多文件打包压缩

最近更新时间:2025-03-06 11:00:13

我的收藏

简介

本文档提供关于数据万象文件处理压缩任务的相关 API 概览以及 SDK 示例代码。
API
操作描述
创建一个多文件打包压缩任务。
查询指定的多文件打包压缩任务结果。

提交多文件打包压缩任务

功能说明

多文件打包压缩功能可以将您的多个文件,打包为 zip 等压缩包格式,以提交任务的方式进行多文件打包压缩,异步返回打包后的文件。
说明
该功能接口从5.4.44版本开始支持,下载新版 SDK 前往 Releases 或参见 快速入门

示例代码

using COSXML;
using COSXML.Auth;
using COSXML.Model.CI;


namespace COSXMLDemo
{
public class CreateFileZipProcessJobModel
{
public CosXml cosXml;
// 初始化 COS 服务实例
private void InitCosXml()
{
string region = Environment.GetEnvironmentVariable("COS_REGION");
CosXmlConfig config = new CosXmlConfig.Builder()
.SetRegion(region) // 设置默认的地域, COS 地域的简称请参照 https://cloud.tencent.com/document/product/436/6224
.Build();
string secretId = Environment.GetEnvironmentVariable("SECRET_ID"); // 云 API 密钥 SecretId, 获取 API 密钥请参照 https://console.cloud.tencent.com/cam/capi
string secretKey = Environment.GetEnvironmentVariable("SECRET_KEY"); // 云 API 密钥 SecretKey, 获取 API 密钥请参照 https://console.cloud.tencent.com/cam/capi
long durationSecond = 600; //每次请求签名有效时长,单位为秒
QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId, secretKey, durationSecond);
this.cosXml = new CosXmlServer(config, qCloudCredentialProvider);
}

CreateFileZipProcessJobModel()
{
InitCosXml();
}
public void CreateFileZipProcessJob()
{
try
{
string bucket = "bucketname-APPID";
string textKey = "";
CreateFileZipProcessJobsRequest request = new CreateFileZipProcessJobsRequest(bucket);
// 表示任务的类型,多文件打包压缩默认为:FileCompress。;
request.SetTag("FileCompress");
// 文件打包时,是否需要去除源文件已有的目录结构,有效值:0:不需要去除目录结构,打包后压缩包中的文件会保留原有的目录结构;1:需要,打包后压缩包内的文件会去除原有的目录结构,所有文件都在同一层级。例如:源文件 URL 为 https://domain/source/test.mp4,则源文件路径为 source/test.mp4,如果为 1,则 ZIP 包中该文件路径为 test.mp4;如果为0, ZIP 包中该文件路径为 source/test.mp4。;
request.SetFlatten("0");
// 打包压缩的类型,有效值:zip、tar、tar.gz。;
request.SetFormat("zip");
// 压缩类型,仅在 Format 为 tar.gz 或 zip 时有效。faster:压缩速度较快 better:压缩质量较高,体积较小default:适中的压缩方式默认值为 default;
request.SetType("better");
// 压缩包密钥,传入时需先经过 base64 编码,编码后长度不能超过128。当 Format 为 zip 时生效。;
request.SetCompressKey("");
// 支持将需要打包的文件整理成索引文件,后台将根据索引文件内提供的文件 url,打包为一个压缩包文件。索引文件需要保存在当前存储桶中,本字段需要提供索引文件的对象地址,不需要带域名,填写示例:/test/index.csv索引文件格式:仅支持 CSV 文件,一行一条 URL(仅支持本存储桶文件),如有多列字段,默认取第一列作为 URL。;
request.SetUrlList("");
// 支持对存储桶中的某个前缀进行打包,如果需要对某个目录进行打包,需要加/,例如test目录打包,则值为:test/。;
request.SetPrefix("");
// 支持对存储桶中的多个文件进行打包,个数不能超过1000,如需打包更多文件,请使用UrlList或Prefix参数。;
COSXML.Model.CI.CreateFileZipProcessJobs.KeyConfig keyConfig = new CreateFileZipProcessJobs.KeyConfig();
keyConfig.key = "CITestImage.png";
keyConfig.rename = "CITestImage.zip";
keyConfig.imageParams = "";
request.setKeyConfig(keyConfig);
// 打包时如果单个文件出错,是否忽略错误继续打包。有效值为:ture:忽略错误继续打包后续的文件;false:遇到某个文件执行打包报错时,直接终止打包任务,不返回压缩包。默认值为 false。;
request.SetIgnoreError ("true");
// 透传用户信息,可打印的 ASCII 码,长度不超过1024。;
request.SetUserData("");
// 存储桶的地域。;
request.SetRegion("");
// 保存压缩后文件的存储桶。;
request.SetBucket(bucket);
// 压缩后文件的文件名;
request.SetObjectInfo("");
// 任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式。;
request.SetCallBackFormat("");
// 任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型。;
request.SetCallBackType("Url");
// 任务回调的地址,优先级高于队列的回调地址。;
request.SetCallBack("");
// 消息队列所属园区,目前支持园区 sh(上海)、bj(北京)、gz(广州)、cd(成都)、hk(中国香港);
request.SetMqRegion("");
// 消息队列使用模式,默认 Queue :主题订阅:Topic 队列服务: Queue;
request.SetMqMode("");
// TDMQ 主题名称;
request.SetMqName("");
request.createFileZipProcessJobs.GetInfo();
CreateFileZipProcessJobsResult result = cosXml.createFileZipProcessJobs(request);

Console.WriteLine(result.createFileZipProcessJobsResult.JobsDetail.JobId);
}
catch (COSXML.CosException.CosClientException clientEx)
{
Console.WriteLine("CosClientException: " + clientEx);
}
catch (COSXML.CosException.CosServerException serverEx)
{
Console.WriteLine("CosServerException: " + serverEx.GetInfo());
}
}
public static void CreateFileZipProcessJobModelMain()
{
CreateFileZipProcessJobModel m = new CreateFileZipProcessJobModel();
m.CreateFileZipProcessJob();
}
}
}
说明
更多完整示例,请前往 GitHub 查看。

参数说明

初始化 COS 服务实例具体数据描述如下:
节点名称(关键字)
描述
类型
是否必选
region
设置默认的地域,COS 地域的简称请参见 地域和访问域名
String
secretId
云 API 密钥 SecretId,获取 API 密钥
String
secretKey
云 API 密钥 SecretKey,获取 API 密钥
String

CreateFileZipProcessJobsRequest 的具体数据描述如下:
节点名称(关键字)
描述
类型
是否必选
Tag
表示任务的类型,多文件打包压缩默认为:FileCompress。
String
CallBackFormat
任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式。
String
CallBackType
任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型。
String
CallBack
任务回调的地址,优先级高于队列的回调地址。
String
UserData
透传用户信息,可打印的 ASCII 码,长度不超过1024。
String
Format
打包压缩的类型,有效值:zip、tar、tar.gz。
String
Type
压缩类型,仅在 Format 为 tar.gz 或 zip 时有效。
faster:压缩速度较快。
better:压缩质量较高,体积较小。
default:适中的压缩方式。
默认值为 default。
String
CompressKey
压缩包密钥,传入时需先经过 base64编码,编码后长度不能超过128。当 Format 为 zip 时生效。
String
UrlList
支持以文件清单的形式进行打包压缩,将需要打包的文件链接整理成索引文件,后台将对索引文件中的文件链接进行打包。
索引文件需要保存在当前存储桶中,本字段需要提供索引文件的对象地址,不需要带域名,填写示例:/test/index.csv。
索引文件规范:
支持的格式:仅支持 CSV 文件。
一行一个文件,其中
第一列(必填):文件的完整 URL,需进行 URLEncode(仅支持本存储桶文件)。
第二列(非必填):需要新建的目录,打包后文件将保存在该目录下,不填表示不新增目录。
第三列(非必填):文件重命名,打包后文件名将以该列为准,不填表示不更改文件名。
String
Prefix
支持对存储桶中的文件前缀进行打包,如果需要对某个目录进行打包,需要加/,例如 test 目录打包,则值为:test/。
String
KeyConfig
支持对存储桶中的文件进行打包,可填写多个,个数不能超过 1000,如需打包更多文件,请使用 UrlList 或 Prefix 参数。
Container
Flatten
可以按照以下几种方式调整目录结构,有效值:
0:表示不去除压缩包内的目录结构,打包后压缩包中的文件会保留原有的目录结构。
1:表示去除所有目录结构,打包后压缩包内的所有文件都在同一层级。
2:仅对以 Prefix 方式打包压缩时有效,表示不去除压缩包内的目录结构,在打包时会先创建一个目录,以参数 Prefix 中的最后一层作为目录名称,目录内是当前打包的所有文件及文件夹。
3:仅对以 Prefix 方式打包压缩时有效,表示不去除压缩包内的目录结构,在打包时直接将参数 Prefix 下的所有文件及文件夹(不包含参数Prefix 本身)进行打包,放在压缩包的根目录。
示例:
假设以 Prefix 进行打包,Prefix 的值为 test/data/,则文件test/data/123/word.doc 在打包压缩结果如下:
Flatten=0时:打包后,该文件在压缩包内为 test/data/123/word.doc
Flatten=1时:打包后,该文件在压缩包内为 word.doc
Flatten=2时:打包后,该文件在压缩包内为 data/123/word.doc
Flatten=3时:打包后,该文件在压缩包内为 123/word.doc
String
IgnoreError
打包时如果单个文件出错,是否忽略错误继续打包。有效值为:
true:忽略错误继续打包后续的文件。
false:遇到某个文件执行打包报错时,直接终止打包任务,不返回压缩包。
默认值为 false。
String
Region
存储桶的地域。
String
Bucket
保存压缩后文件的存储桶。
String
Object
压缩后文件的文件名。
String

Container 类型 KeyConfig 的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
Key
COSXML.Model.CI.CreateFileZipProcessJobs.KeyConfig
存储桶中的包含路径的完整文件名称,请使用 UrlList 或 Prefix 参数。
String
ReName
COSXML.Model.CI.CreateFileZipProcessJobs.KeyConfig
文件重命名,打包后文件名将以该值为准,不填表示不更改文件名。
String
ImageParams
COSXML.Model.CI.CreateFileZipProcessJobs.KeyConfig
图片处理参数,支持的参数详见 基础图片处理,填写示例:imageMogr2/thumbnail/!50p
String
注意:
UrlList、Prefix、KeyConfig 三者仅能选择一个,不能都为空,也不会同时生效。如果填了多个,会按优先级 UrlList > Prefix > KeyConfig 取最高优先级执行。

返回结果说明

成功:返回 CreateFileZipProcessJobsResult 对象响应信息。具体响应参数同 提交多文件打包压缩任务的 Response
失败:发生错误(如 Bucket 不存在),抛出异常 CosClientException 或者 CosServiceException。详情请参见 异常处理

查询多文件打包压缩结果

功能说明

动查询指定的多文件打包压缩任务结果,根据任务 ID 查询任务详情。

示例代码

using COSXML;
using COSXML.Auth;
using COSXML.Model.CI;

namespace COSXMLDemo
{
public class DescribeFileZipProcessJobsModel
{
public CosXml cosXml;
// 初始化 COS 服务实例
private void InitCosXml()
{
string region = Environment.GetEnvironmentVariable("COS_REGION");
CosXmlConfig config = new CosXmlConfig.Builder()
.SetRegion(region) // 设置默认的地域, COS 地域的简称请参照 https://cloud.tencent.com/document/product/436/6224
.Build();
string secretId = Environment.GetEnvironmentVariable("SECRET_ID"); // 云 API 密钥 SecretId, 获取 API 密钥请参照 https://console.cloud.tencent.com/cam/capi
string secretKey = Environment.GetEnvironmentVariable("SECRET_KEY"); // 云 API 密钥 SecretKey, 获取 API 密钥请参照 https://console.cloud.tencent.com/cam/capi
long durationSecond = 600; //每次请求签名有效时长,单位为秒
QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId, secretKey, durationSecond);
this.cosXml = new CosXmlServer(config, qCloudCredentialProvider);
}

DescribeFileZipProcessJobsModel()
{
InitCosXml();
}
public void DescribeFileZipProcessJobs()
{
try
{
string bucket = "bucketname-APPID";
string jobId = "";
DescribeFileZipProcessJobsRequest describeDocProcessJobsRequest = new DescribeFileZipProcessJobsRequest(bucket,jobId);
DescribeFileZipProcessJobsResult describeFileZipProcessJobsResult= cosXml.describeFileZipProcessJobs(describeDocProcessJobsRequest);
Console.WriteLine(describeFileZipProcessJobsResult.describeFileZipProcessJobsResult.JobsDetail.Count);
}
catch (COSXML.CosException.CosClientException clientEx)
{
Console.WriteLine("CosClientException: " + clientEx);
}
catch (COSXML.CosException.CosServerException serverEx)
{
Console.WriteLine("CosServerException: " + serverEx.GetInfo());
}
}
public static void DescribeFileZipProcessJobsModelMain()
{
DescribeFileZipProcessJobsModel m = new DescribeFileZipProcessJobsModel();
m.DescribeFileZipProcessJobs();
}
}
}
说明
更多完整示例,请前往 GitHub 查看。

参数说明

初始化 COS 服务实例具体数据描述如下:
节点名称(关键字)
描述
类型
是否必选
region
设置默认的地域,COS 地域的简称请参见 地域和访问域名
String
secretId
云 API 密钥 SecretId,获取 API 密钥
String
secretKey
云 API 密钥 SecretKey,获取 API 密钥
String

DescribeFileZipProcessJobsRequest 的具体数据描述如下:
参数名称
描述
类型
是否必选
bucketName
Bucket 的命名规则为 BucketName-APPID,详情请参见 存储桶概述
String
jobId
要查询的任务 ID。
String

返回结果说明

成功: 返回任务详情响应包装类,类中包含一个 DescribeFileZipProcessJobsResult 任务详情对象。具体响应参数请参见 查询多文件打包压缩结果的 Response
失败: 发生错误(如身份认证失败),抛出异常 CosClientException 或者 CosServiceException。详情请参见 异常处理