提交多文件打包压缩任务

最近更新时间:2025-08-22 15:29:12

我的收藏

功能描述

多文件打包压缩功能可以将您的多个文件,打包为 zip 等压缩包格式,以提交任务的方式进行多文件打包压缩,异步返回打包后的文件,该接口属于 POST 请求。

授权说明

通过子账号使用时,需要在 授权策略 的 action 中添加 ci:CreateMediaJobs权限。数据万象支持的所有操作接口请参见 CI action
子账号使用异步处理接口时,需要授予 cam:passrole 权限,异步处理接口会通过 CAM 的“角色”进行 COS 的资源读写操作,PassRole 权限用于传递角色, 具体请查看 访问管理-写操作-PassRole 接口

服务开通

使用该功能需提前 绑定存储桶,开通数据万象服务。
使用该功能需提前通过 控制台接口 开通文件处理服务。
注意:
数据万象绑定后,如果您手动对存储桶进行数据万象的解绑操作,将无法继续使用该功能。

使用限制

使用该接口时,请先确认相关限制条件。详情请参见 使用限制

费用说明

如果文件为 COS 上的低频存储类型,调用会产生 COS 低频数据取回费用
不支持打包 COS 上的归档存储类型和深度归档存储类型的文件,如果打包需要此类型文件,请先 恢复归档文件


请求

请求示例

POST /jobs HTTP/1.1
Host: <BucketName-APPID>.ci.<Region>.myqcloud.com
Date: <GMT Date>
Authorization: <Auth String>
Content-Length: <length>
Content-Type: application/xml

<body>
说明:
Authorization:Auth String(详情请参见 请求签名 文档)。
通过子账号使用时,需要授予相关的权限,详情请参见 授权粒度详情 文档。

请求头

此接口仅使用公共请求头部,详情请参见 公共请求头部 文档。

请求体

该请求操作的实现需要有如下请求体。
<Request>
<Tag>FileCompress</Tag>
<Operation>
<FileCompressConfig>
<Prefix>test/</Prefix>
<Format>zip</Format>
<Flatten>0</Flatten>
<Type>better</Type>
<CompressKey>MTIzNDU2Nzg5MA==</CompressKey>
</FileCompressConfig>
<Output>
<Region>ap-chongqing</Region>
<Bucket>test-1234567890</Bucket>
<Object>output/test.zip</Object>
</Output>
<UserData>This is my data.</UserData>
</Operation>
<CallBack>http://callback.demo.com</CallBack>
<CallBackFormat>JSON</CallBackFormat>
</Request>
具体的数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
Request
保存请求的容器。
Container
Container 类型 Request 的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
Tag
Request
表示任务的类型,多文件打包压缩默认为:FileCompress。
String
Operation
Request
包含文件打包压缩的处理规则。
Container
CallBackFormat
Request
任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式。
String
CallBackType
Request
任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型。
String
CallBack
Request
任务回调的地址,优先级高于队列的回调地址。
String
CallBackMqConfig
Request
任务回调 TDMQ 配置,当 CallBackType 为 TDMQ 时必填。详情请参见 CallBackMqConfig
Container
Container 类型
Operation
的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
FileCompressConfig
Request.Operation
指定文件打包压缩的处理规则。
Container
UserData
Request.Operation
透传用户信息,可打印的 ASCII 码,长度不超过1024。
String
Output
Request.Operation
指定打包压缩后的文件保存的地址信息。
Container
Container 类型
FileCompressConfi
g 的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
Format
Request.Operation.FileCompressConfig
打包压缩的类型,有效值:zip、tar、tar.gz。
String
Type
Request.Operation.FileCompressConfig
压缩类型,仅在 Format 为 tar.gz 或 zip 时有效。
faster:压缩速度较快。
better:压缩质量较高,体积较小。
default:适中的压缩方式。
默认值为 default。
String
CompressKey
Request.Operation.FileCompressConfig
压缩包密钥,传入时需先经过 base64编码,编码后长度不能超过128。当 Format 为 zip 时生效。
String
UrlList
Request.Operation.FileCompressConfig
支持以文件清单的形式进行打包压缩,将需要打包的文件链接整理成索引文件,后台将对索引文件中的文件链接进行打包。
索引文件需要保存在当前存储桶中,本字段需要提供索引文件的对象地址,不需要带域名,填写示例:/test/index.csv。
索引文件规范:
支持的格式:仅支持 CSV 文件;
一行一个文件,其中
第一列(必填):文件的完整 URL,其中路径及文件名称需进行 URLEncode,协议头http及斜杠/不需要进行URLEncode(仅支持本存储桶文件)
第二列(非必填):需要新建的目录,打包后文件将保存在该目录下,不填表示不新增目录
第三列(非必填):文件重命名,打包后文件名将以该列为准,不填表示不更改文件名
String
Prefix
Request.Operation.FileCompressConfig
支持对存储桶中的文件前缀进行打包,如果需要对某个目录进行打包,需要加/,例如 test 目录打包,则值为:test/。
String
KeyConfig
Request.Operation.FileCompressConfig
支持对存储桶中的文件进行打包,可填写多个,个数不能超过 1000,如需打包更多文件,请使用 UrlList 或 Prefix 参数。
Container 数组
Flatten
Request.Operation.FileCompressConfig
可以按照以下几种方式调整目录结构,有效值:
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
Request.Operation.FileCompressConfig
打包时如果单个文件出错,是否忽略错误继续打包。有效值为:
true:忽略错误继续打包后续的文件;
false:遇到某个文件执行打包报错时,直接终止打包任务,不返回压缩包。
默认值为 false。
String
Container 类型 KeyConfig 的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
Key
Request.Operation.FileCompressConfig.KeyConfig
存储桶中的包含路径的完整文件名称,请使用 UrlList 或 Prefix 参数。
String
Rename
Request.Operation.FileCompressConfig.KeyConfig
文件重命名,打包后文件名将以该值为准,不填表示不更改文件名。
String
ImageParams
Request.Operation.FileCompressConfig.KeyConfig
图片处理参数,支持的参数请参见 基础图片处理,填写示例:imageMogr2/thumbnail/!50p
String
注意:
UrlList、Prefix、KeyConfig 三者仅能选择一个,不能都为空,也不会同时生效。如果填了多个,会按优先级 UrlList > Prefix > KeyConfig 取最高优先级执行。
Container 类型
Output
的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
Region
Request.Operation.Output
存储桶的地域。
String
Bucket
Request.Operation.Output
保存压缩后文件的存储桶。
String
Object
Request.Operation.Output
压缩后文件的文件名。
String

响应

响应头

此接口仅返回公共响应头部,详情请参见 公共响应头部 文档。

响应体

该响应体返回为 application/xml 数据,包含完整节点数据的内容展示如下:
<Response>
<JobsDetail>
<Code>Success</Code>
<Message/>
<JobId>f93984788066911ed89ed352d4d9d2084</JobId>
<State>Submitted</State>
<Progress>0</Progress>
<CreationTime>2022-07-18T15:16:43+0800</CreationTime>
<EndTime>-</EndTime>
<StartTime>-</StartTime>
<QueueId>p2911917386e148639319e13c285cc774</QueueId>
<QueueType>FileProcess</QueueType>
<Tag>FileCompress</Tag>
<Operation>
<FileCompressConfig>
<Prefix>test/</Prefix>
<Format>zip</Format>
<Flatten>0</Flatten>
<Type>better</Type>
<CompressKey>MTIzNDU2Nzg5MA==</CompressKey>
</FileCompressConfig>
<Output>
<Region>ap-chongqing</Region>
<Bucket>test-1234567890</Bucket>
<Object>output/test.zip</Object>
</Output>
<FileCompressResult>
<Region>ap-chongqing</Region>
<Bucket>test-1234567890</Bucket>
<Object>output/test.zip</Object>
<CompressFileCount></CompressFileCount>
<ErrorDetail>
<ErrorCount>3</ErrorCount>
<ErrorFile>test1.jpg</ErrorFile>
<ErrorFile>test2.jpg</ErrorFile>
<ErrorFile>test3.jpg</ErrorFile>
</ErrorDetail>
</FileCompressResult>
<UserData>This is my data.</UserData>
</Operation>
</JobsDetail>
</Response>
具体的数据内容如下:
节点名称(关键字)
父节点
描述
类型
Response
保存结果的容器。
Container
Container 节点 Response 的内容:
节点名称(关键字)
父节点
描述
类型
JobsDetail
Response
任务的详细信息。
Container 数组
Container 节点
JobsDetail
的内容:
节点名称(关键字)
父节点
描述
类型
Code
Response.JobsDetail
错误码,当 State 为 Failed 时生效。
String
Message
Response.JobsDetail
错误描述,当 State 为 Failed 时生效。
String
JobId
Response.JobsDetail
新创建任务的 ID。
String
Tag
Response.JobsDetail
表示任务的类型,多文件打包压缩默认为:FileCompress。
String
State
Response.JobsDetail
任务状态
Submitted:已提交,待执行。
Running:执行中。
Success:执行成功。
Failed:执行失败。
Pause:任务暂停,当暂停队列时,待执行的任务会变为暂停状态。
Cancel:任务被取消执行。
String
Progress
Response.JobsDetail
任务进度百分比,范围为[0, 100]。
Int
CreationTime
Response.JobsDetail
任务的创建时间。
String
StartTime
Response.JobsDetail
任务的开始时间。
String
EndTime
Response.JobsDetail
任务的结束时间。
String
QueueId
Response.JobsDetail
任务所属的 队列 ID
String
QueueType
Response.JobsDetail
任务所属的队列类型
String
Operation
Response.JobsDetail
多文件打包压缩的处理规则。
Container
Container 节点 Operation 的内容:
节点名称(关键字)
父节点
描述
类型
UserData
Response.JobsDetail.Operation
透传用户信息。
String
Output
Response.JobsDetail.Operation
同请求中的 Request.Operation.Output
Container
FileCompressConfig
Response.JobsDetail.Operation
Container
FileCompressResult
Response.JobsDetail.Operation
多文件打包压缩的结果,任务未完成时不返回。
Container
当任务完成时,可通过 FileCompressResult 节点查看任务结果,Container 节点 FileCompressResult 的内容:
节点名称(关键字)
父节点
描述
类型
Region
Response.JobsDetail.Operation.FileCompressResult
打包压缩后文件保存的存储桶的地域。
String
Bucket
Response.JobsDetail.Operation.FileCompressResult
打包压缩后文件保存的存储桶。
String
Object
Response.JobsDetail.Operation.FileCompressResult
打包压缩后文件的名称。
String
CompressFileCount
Response.JobsDetail.Operation.FileCompressResult
打包文件的总数
String
ErrorDetail
Response.JobsDetail.Operation.FileCompressResult
当文件打包压缩任务失败时,可通过该字段查看具体的错误文件。
Container
Container 节点 ErrorDetail 的内容:
节点名称(关键字)
父节点
描述
类型
ErrorCount
Response.JobsDetail.Operation.FileCompressResult.ErrorDetail
打包压缩失败时,出错的文件数。
String
ErrorFile
Response.JobsDetail.Operation.FileCompressResult.ErrorDetail
打包压缩失败时,出错的文件名称,该字段最多可列出1000个出错的文件名称,超过1000条的错误文件不再列出。
String

错误码

该请求操作无特殊错误信息,常见的错误信息请参见 错误码 文档。

实际案例

请求

POST /jobs HTTP/1.1
Authorization:q-sign-algorithm=sha1&q-ak=************************************&q-sign-time=1497530202;1497610202&q-key-time=1497530202;1497610202&q-header-list=&q-url-param-list=&q-signature=****************************************
Host:test-1234567890.ci.ap-chongqing.myqcloud.com
Content-Length: 166
Content-Type: application/xml

<Request>
<Tag>FileCompress</Tag>
<Operation>
<FileCompressConfig>
<Prefix>test/</Prefix>
<Format>zip</Format>
<Flatten>0</Flatten>
<Type>better</Type>
<CompressKey>MTIzNDU2Nzg5MA==</CompressKey>
</FileCompressConfig>
<Output>
<Region>ap-chongqing</Region>
<Bucket>test-1234567890</Bucket>
<Object>output/test.zip</Object>
</Output>
<UserData>This is my data.</UserData>
</Operation>
<CallBack>http://callback.demo.com</CallBack>
<CallBackFormat>JSON</CallBackFormat>
</Request>

响应

HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 230
Connection: keep-alive
Date: Mon, 18 Jul 2022 19:37:29 GMT
Server: tencent-ci
x-ci-request-id: NjMxMDJhYTNfMThhYTk0MGFfYmU1OV8zZjc=

<Response>
<JobsDetail>
<Code>Success</Code>
<Message/>
<JobId>f93984788066911ed89ed352d4d9d2084</JobId>
<State>Submitted</State>
<Progress>0</Progress>
<CreationTime>2022-07-18T15:16:43+0800</CreationTime>
<EndTime>-</EndTime>
<StartTime>-</StartTime>
<QueueId>p2911917386e148639319e13c285cc774</QueueId>
<QueueType>FileProcess</QueueType>
<Tag>FileCompress</Tag>
<Operation>
<FileCompressConfig>
<Prefix>test/</Prefix>
<Format>zip</Format>
<Flatten>0</Flatten>
<Type>better</Type>
<CompressKey>MTIzNDU2Nzg5MA==</CompressKey>
</FileCompressConfig>
<Output>
<Region>ap-chongqing</Region>
<Bucket>test-1234567890</Bucket>
<Object>output/test.zip</Object>
</Output>
<UserData>This is my data.</UserData>
</Operation>
</JobsDetail>
</Response>