Overview
The multi-file zipping feature uses a POST request to zip multiple files into a compressed file such as a ZIP file. You can submit a job to zip multiple files and asynchronously return the compressed file.
Billing Description
Calling the API will incur multi-file zipping fees and COS read request fees as described in Request Fees. If the files are stored in COS STANDARD_IA storage class, calling the API will incur STANDARD_IA data retrieval fees as described in Data Retrieval Fees. Zipping is not supported for files stored in the ARCHIVE or DEEP ARCHIVE storage classes. To zip these files, you first need to restore them as instructed in POST Object restore. Restrictions
Supported file quantity: At most 10,000 files can be zipped.
Supported file size: The total size of the compressed file is less than 50 GB.
This API can be used in Beijing, Shanghai, Guangzhou, Chengdu, Hong Kong (China), Singapore, and Silicon Valley regions.
Request
Sample request
POST /file_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>
Request body
This request requires the following request body:
<Request>
<Tag>FileCompress</Tag>
<Operation>
<FileCompressConfig>
<Prefix>test/</Prefix>
<Format>zip</Format>
<Flatten>0</Flatten>
</FileCompressConfig>
<Output>
<Region>ap-chongqing</Region>
<Bucket>test-1234567890</Bucket>
<Object>output/test.zip</Object>
</Output>
<UserData>This is my data.</UserData>
</Operation>
<QueueId>p2911917386e148639319e13c285cc774</QueueId>
<CallBack>http://callback.demo.com</CallBack>
<CallBackFormat>JSON<CallBackFormat>
</Request>
The nodes are described as follows:
Request has the following sub-nodes:
|
| | Job type. It is FileCompress for multi-file zipping by default. | | |
| | | | |
| | ID of the queue where the job is in | | |
| | Job callback format, which can be JSON or XML (default). It takes priority over that of the queue. | | |
| | Job callback type, which can be Url (default) or TDMQ. It takes priority over that of the queue. | | |
| | Job callback address. It takes higher priority over that of the queue. | | |
| | | | |
Operation has the following sub-nodes:
|
| | | | |
| | The user information passed through, which is printable ASCII codes of up to 1,024 in length. | | |
| | Address where the compressed file is stored | | |
FileCompressConfig has the following sub-nodes:
|
| Request.Operation.FileCompressConfig | Whether to remove the directory structure of the original file during file zipping. Valid values: - 0: No. After file zipping, the original directory structure is retained. - 1: Yes. After file zipping, the original directory structure is removed and all files are at the same level. Assume that the original file URL is https://domain/source/test.mp4 and the original file directory is source/test.mp4. If this parameter is set to 1, the file directory in the ZIP file is test.mp4. If this parameter is set to 0, the file directory in the ZIP file is source/test.mp4. | | |
| Request.Operation.FileCompressConfig | Zipping type. Valid values: zip, tar, tar.gz | | |
| Request.Operation.FileCompressConfig | Files to be zipped can be sorted into an index file. The backend zips the files into a compressed file according to the file URL provided in the index file. The index file must be saved in the current bucket, and this field must provide the object address of the index file, for example, /test/index.csv. Index file format: Only CVS files in which one URL occupies one row (only files in the bucket are supported) are supported. If there are multiple columns, the first column is used as the URL by default. The number of files cannot exceed 10,000 and the total size cannot exceed 50 GB. Otherwise, the job will fail. | | |
| Request.Operation.FileCompressConfig | Files with a specified prefix in the bucket can be zipped. To zip files in a specified directory, add / to the directory. For example, to zip files in the test directory, set this parameter to test/. The number of files cannot exceed 10,000 and the total size cannot exceed 50 GB. Otherwise, the job will fail. | | |
| Request.Operation.FileCompressConfig | Multiple files in the bucket can be zipped. The number of files cannot exceed 1,000 and the total size cannot exceed 50 GB. Otherwise, the job will fail. | | |
Note:
Only one of UrlList, Prefix, and Key can be selected. They cannot all be empty or do not take effect at the same time. If multiple parameters are specified, the parameter with the highest priority prevails according to the priority UrlList > Prefix > Key.
Output has the following sub-nodes:
|
| | | | |
| | Bucket where the compressed file is stored | | |
| | Name of the compressed file | | |
Response
Response body
The response body returns application/xml data. The following contains all the nodes:
<Response>
<JobsDetail>
<Code>Success</Code>
<Message/>
<JobId>f93984788066911ed89ed352d4d9d2084</JobId>
<State>Submitted</State>
<CreationTime>2022-07-18T15:16:43+0800</CreationTime>
<EndTime>-</EndTime>
<StartTime>-</StartTime>
<QueueId>p2911917386e148639319e13c285cc774</QueueId>
<Tag>FileCompress</Tag>
<Operation>
<FileCompressConfig>
<Prefix>test/</Prefix>
<Format>zip</Format>
<Flatten>0</Flatten>
</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>
The nodes are described as follows:
Response has the following sub-nodes:
JobsDetail has the following sub-nodes:
|
| | Error code, which is returned only if State is Failed | |
| | Error message, which is returned only if State is Failed | |
| | | |
| | Job type. It is FileCompress for multi-file zipping by default. | |
| | Job status. Valid values: Submitted (submitted), Running (running), Success (successful), Failed (failed), Pause (paused), Cancel (canceled) | |
| | | |
| | | |
| | | |
| | ID of the queue where the job is in | |
| | | |
Operation has the following sub-nodes:
|
| Response.JobsDetail.Operation | The user information passed through. | |
| Response.JobsDetail.Operation | Same as Request.Operation.Output in the request. | |
| Response.JobsDetail.Operation | Same as Request.Operation.FileCompressConfig in the request. | |
| Response.JobsDetail.Operation | Multi-file zipping result, which will not be returned when the job is not completed. | |
FileCompressResult has the following sub-nodes:
|
| Response.JobsDetail.Operation.FileCompressResult | Region of the bucket where the compressed file is stored | |
| Response.JobsDetail.Operation.FileCompressResult | Bucket where the compressed file is stored | |
| Response.JobsDetail.Operation.FileCompressResult | Name of the compressed file | |
Error codes
There are no specific error messages for this request operation. For common error messages, see Error Codes. Examples
Request
POST /file_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>FileCompress</Tag>
<Operation>
<FileCompressConfig>
<Prefix>test/</Prefix>
<Format>zip</Format>
<Flatten>0</Flatten>
</FileCompressConfig>
<Output>
<Region>ap-chongqing</Region>
<Bucket>test-1234567890</Bucket>
<Object>output/test.zip</Object>
</Output>
<UserData>This is my data.</UserData>
</Operation>
<QueueId>p2911917386e148639319e13c285cc774</QueueId>
<CallBack>http://callback.demo.com</CallBack>
<CallBackFormat>JSON<CallBackFormat>
</Request>
Response
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>
<CreationTime>2022-07-18T15:16:43+0800</CreationTime>
<EndTime>-</EndTime>
<StartTime>-</StartTime>
<QueueId>p2911917386e148639319e13c285cc774</QueueId>
<Tag>FileCompress</Tag>
<Operation>
<FileCompressConfig>
<Prefix>test/</Prefix>
<Format>zip</Format>
<Flatten>0</Flatten>
</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>