有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

功能描述

以提交任务的方式进行压缩包文件的解压缩,异步返回压缩包内的全部或部分文件,该接口属于 POST 请求。

授权说明

通过子账号使用时,需要授予 ci:CreateFileProcessJobs权限,详情请参见 数据万象 action
子账号使用异步处理接口时,需要授予 cam:passrole权限,异步处理接口会通过 CAM 的“角色”进行 COS 的资源读写操作,PassRole 权限用于传递角色, 具体请查看 访问管理-写操作-PassRole 接口

服务开通

使用该功能需提前开通数据万象,并绑定存储桶。详情请参见 绑定存储桶
使用该功能需提前通过控制台或接口开通文件处理服务 。详情请参见 开通文件处理服务

限制说明

使用该接口时,请先确认相关限制条件。详情请参见 使用限制
文件大小支持:支持解压小于5TB 的压缩包文件。
支持解压的文件格式:zip、tar、gz、7zip、rar、apk。
文件解压的处理方式为流式解压,会边解压边输出解压文件,如果解压过程中有部分文件损坏导致解压操作中止,会保留已解压的部分文件。
调用接口需携带签名,具体规则请参见 请求签名 文档。
本接口当前支持以下地域:北京、上海、广州、成都、南京、重庆、中国香港、新加坡、硅谷。

费用说明

调用接口会产生 文件解压费用COS 读请求费用
如果文件为 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>FileUncompress</Tag>
<Input>
<Object>input/test.zip</Object>
</Input>
<Operation>
<FileUncompressConfig>
<Prefix>output/</Prefix>
<PrefixReplaced>1</PrefixReplaced>
<UnCompressKey>MTIzNDU2Nzg5MA==</UnCompressKey>
<Mode>1</Mode>
<DownloadConfig>
<Prefix>test/</Prefix>
<Key>ceshi1.mp4/</Key>
<Key>ceshi2.mp4/</Key>
</DownloadConfig>
<ListingFile>true</ListingFile>
</FileUncompressConfig>
<Output>
<Region>ap-chongqing</Region>
<Bucket>test-1234567890</Bucket>
</Output>
<UserData>This is my data.</UserData>
</Operation>
<CallBack>http://callback.demo.com</CallBack>
<CallBackFormat>JSON</CallBackFormat>
</Request>
具体的数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
Request
保存请求的容器。
Container
Container 类型 Request 的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
Tag
Request
表示任务的类型,文件解压默认为:FileUncompress。
String
Input
Request
包含待操作的文件信息。
Container
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 类型 Input 的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
Object
Request.Input
文件名,取值为文件在当前存储桶中的完整名称。
String
Container 类型
Operation
的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
FileUncompressConfig
Request.Operation
指定文件解压的处理规则。
Container
UserData
Request.Operation
透传用户信息,可打印的 ASCII 码,长度不超过1024。
String
Output
Request.Operation
指定解压后的文件保存的存储桶信息。
Container
Container 类型 FileUncompressConfig 的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
Prefix
Request.Operation.FileUncompressConfig
指定解压后输出文件的前缀,不填则默认保存在存储桶根路径。
String
UnCompressKey
Request.Operation.FileUnCompressConfig
解压密钥,传入时需先经过 base64编码。
String
PrefixReplaced
Request.Operation.FileUncompressConfig
指定解压后的文件路径是否需要替换前缀,有效值:
0:不添加额外的前缀,解压缩将保存在 Prefix 指定的路径下(不会保留压缩包的名称,仅将压缩包内的文件保存至指定的路径)
1:以压缩包本身的名称作为前缀,解压缩将保存在 Prefix 指定的路径下
2:以压缩包完整路径作为前缀,此时如果不指定 Prefix,就是解压到压缩包所在的当前路径(包含压缩包本身名称)
默认值为0。
String
Mode
Request.Operation.FileUncompressConfig
解压模式
0:全部下载
1:解压指定内容
默认值为0
String
DownloadConfig
Request.Operation.FileUncompressConfig
解压指定内容配置,当 Mode = 1 时必填
String
ListingFile
Request.Operation.FileUncompressConfig
指定查询任务或查看任务回调时,是否需要输出已解压的文件列表。输出的列表将在查询任务响应或回调中的<FileList>字段下展示。
限制说明:仅支持展示前1000条文件,1000条以后的文件记录将被截断。
如需查看更多文件,建议通过 COS GET Bucket 接口查询。
bool
示例: 假设压缩包名为 test.zip,压缩包内的文件为“图片.jpg”,存储在了存储桶 A 的 123 目录下,则压缩包的完整路径为:123/test.zip。 对该压缩包进行解压缩,指定解压缩到存储桶A,并指定 Prefix 为 456,则不同的PrefixReplaced值对应解压后的文件保存情况如下: 0:“图片.jpg”会保存在 456 目录下,“图片.jpg”的完整路径为 456/图片.jpg; 1:“图片.jpg”会以 test 为前缀保存在 456 目录下,“图片.jpg”的完整路径为 456/test/图片.jpg; 2:“图片.jpg”会以 123/test 为前缀保存在 456 目录下,“图片.jpg”的完整路径为 456/123/test/图片.jpg。
Container 类型 DownloadConfig 的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
Prefix
Request.Operation.FileUncompressConfig.DownloadConfig
解压该前缀下的文件
String
Key
Request.Operation.FileUncompressConfig.DownloadConfig
解压该文件,最多同时填 1000 个
String 数组
Container 类型 Output 的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
Region
Request.Operation.Output
存储桶的地域。
String
Bucket
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>
<Tag>FileUncompress</Tag>
<Input>
<BucketId>test-1234567890</BucketId>
<Object>input/test.zip</Object>
<Region>ap-chongqing</Region>
</Input>
<Operation>
<FileUncompressConfig>
<Prefix>output/</Prefix>
<PrefixReplaced>1</PrefixReplaced>
<UnCompressKey>MTIzNDU2Nzg5MA==</UnCompressKey>
<Mode>1</Mode>
<DownloadConfig>
<Prefix>test/</Prefix>
<Key>ceshi1.mp4/</Key>
<Key>ceshi2.mp4/</Key>
</DownloadConfig>
</FileUncompressConfig>
<Output>
<Region>ap-chongqing</Region>
<Bucket>test-1234567890</Bucket>
</Output>
<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
表示任务的类型,文件解压默认为:FileUncompress。
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
Input
Response.JobsDetail
被解压文件的信息。
Container
Operation
Response.JobsDetail
文件解压的处理规则。
Container
Container 节点 Input 的内容:
节点名称(关键字)
父节点
描述
类型
Region
Response.JobsDetail.Input
存储桶所在地域。
String
Bucket
Response.JobsDetail.Input
文件所在的存储桶。
String
Object
Response.JobsDetail.Input
被解压文件的文件名。
String
Container 节点 Operation 的内容:
节点名称(关键字)
父节点
描述
类型
UserData
Response.JobsDetail.Operation
透传用户信息。
String
Output
Response.JobsDetail.Operation
同请求中的 Request.Operation.Output。
Container
FileUncompressConfig
Response.JobsDetail.Operation
同请求中的 Request.Operation.FileUncompressConfig。
Container
FileUncompressResult
Response.JobsDetail.Operation
文件解压的结果,任务未完成时不返回。
Container
Container 节点 FileUncompressResult 的内容:
节点名称(关键字)
父节点
描述
类型
Region
Response.JobsDetail.Operation.FileUncompressResult
解压后文件保存的存储桶的地域。
String
Bucket
Response.JobsDetail.Operation.FileUncompressResult
解压后文件保存的存储桶。
String
FileCount
Response.JobsDetail.Operation.FileUncompressResult
解压后文件的个数。
String
FileList
Response.JobsDetail.Operation.FileUncompressResult
提交解压任务时指定了<ListingFile>为 true 时,并且任务状态为已成功完成时返回该节点,表示已解压的文件列表。
限制说明:仅支持展示前1000条文件,1000条以后的文件记录将被截断。
如需查看更多文件,建议通过 COS GET Bucket 接口查询。
Container
Container 节点 FileList 的内容:
节点名称(关键字)
父节点
描述
类型
Contents
Response.JobsDetail.Operation.FileUncompressResult.FileList
已解压的文件信息,可包含多条。
Container
Container 节点 Contents 的内容:
节点名称(关键字)
父节点
描述
类型
Key
Response.JobsDetail.Operation.FileUncompressResult.FileList.Contents
文件名称。
String
LastModified
Response.JobsDetail.Operation.FileUncompressResult.FileList.Contents
文件的最近一次修改的时间。
String
FileSize
Response.JobsDetail.Operation.FileUncompressResult.FileList.Contents
文件大小。
Int

错误码

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

实际案例

请求

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

<Request>
<Tag>FileUncompress</Tag>
<Input>
<Object>input/test.zip</Object>
</Input>
<Operation>
<FileUncompressConfig>
<Prefix>output/</Prefix>
<PrefixReplaced>1</PrefixReplaced>
<UnCompressKey>MTIzNDU2Nzg5MA==</UnCompressKey>
<Mode>1</Mode>
<DownloadConfig>
<Prefix>test/</Prefix>
<Key>ceshi1.mp4/</Key>
<Key>ceshi2.mp4/</Key>
</DownloadConfig>
</FileUncompressConfig>
<Output>
<Region>ap-chongqing</Region>
<Bucket>test-1234567890</Bucket>
</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>
<Tag>FileUncompress</Tag>
<Input>
<BucketId>test-1234567890</BucketId>
<Object>input/test.zip</Object>
<Region>ap-chongqing</Region>
</Input>
<Operation>
<FileUncompressConfig>
<Prefix>output/</Prefix>
<PrefixReplaced>1</PrefixReplaced>
<UnCompressKey>MTIzNDU2Nzg5MA==</UnCompressKey>
<Mode>1</Mode>
<DownloadConfig>
<Prefix>test/</Prefix>
<Key>ceshi1.mp4/</Key>
<Key>ceshi2.mp4/</Key>
</DownloadConfig>
</FileUncompressConfig>
<Output>
<Region>ap-chongqing</Region>
<Bucket>test-1234567890</Bucket>
</Output>
<UserData>This is my data.</UserData>
</Operation>
</JobsDetail>
</Response>