智能多媒体服务

  • 智能多媒体服务 > API 文档 > 文件处理 >多文件压缩(mkzip)

    多文件压缩(mkzip)

    最近更新时间: 2021-07-26 17:38:23

    简介

    多文件压缩,为用户提供了批量文件的压缩存储功能。用户通过指定一系列 URL,即可将若干七牛空间中的资源文件,在七牛服务端压缩后存储。若用户同时指定了saveas,则将生成的压缩文件以用户指定的 key 存储到指定的 bucket 中,若未指定 saveas,则以压缩文件的 hash 值作为 key 并存储到当前 bucket 中。

    注意

    • 不支持压缩打包空文件。

    少量文件压缩(mode=2)

    接口规格

    POST /pfop/ HTTP/1.1
    Host: api.qiniu.com
    Content-Type: application/x-www-form-urlencoded
    Authorization: Qbox <AccessToken>
        
    bucket=<bucket>&key=<key>&fops=<mkzipArgs>
    
    参数名称 必填 说明
    <bucket> 必填 存储空间名。
    <key> 必填 存储空间内指定资源的文件名字。此处的key所指的资源内容对 mkzip 操作本身没有影响,必填是由于 pfop 接口规格要求请求 body 中参数必须包含 bucket 和 key,因此即使未对空间特定资源进行操作,在执行 mkzip 操作时仍然需要指定账号下的特定空间和该空间的已有资源。
    <mkzipArgs> 必填 mkzipArgs 规格说明如下。

    mkzipArgs 规格说明:

    mkzip/<mode>
         /encoding/<UrlsafeBase64EncodedEncoding>
         /url/<Base64EncodedURL1>[/alias/<Base64EncodedAlias1>]
         /url/<Base64EncodedURL2>[/alias/<Base64EncodedAlias2>]
         ... ...
         /url/<Base64EncodedURLN>[/alias/<Base64EncodedAliasN>]
    
    参数名称 必填 说明
    <Mode> 必填 值为 2,用于少量文件压缩,mkzipArgs字符串长度不能超过2048字节。
    /encoding/<UrlsafeBase64EncodedEncoding> 可选 指示压缩包内资源命名的编码,目前支持 gbk 和 utf-8,默认 utf-8。
    /url/<Base64EncodedURLN> 至少一项 需要被压缩资源(这些资源必须处于同一个 bucket 下)的 URL,必须是公网可访问资源,在请求中需要经过URL安全的Base64编码
    /alias/<Base64EncodedAliasN> 可选 资源在压缩文件中的别名,需要经过URL安全的Base64编码,若不指定则为 url 中资源的原文件名。

    示例

    持久化数据处理的形式:

    1. 获取以下资源:
    • http://78re52.com1.z0.glb.clouddn.com/resource/gogopher.jpg
    • http://78re52.com1.z0.glb.clouddn.com/resource/dive-into-golang.pptx
    • http://78re52.com1.z0.glb.clouddn.com/resource/thinking-in-go.mp4
    1. http://78re52.com1.z0.glb.clouddn.com/resource/gogopher.jpg 重命名为 mkziptest;
    2. 将 mkziptest、dive-into-golang.pptx 和 thinking-in-go.mp4 打包,并另存为成 resource/mkziptest 保存到空间 qiniu-developer 中:
    POST /pfop/ HTTP/1.1
    Host: api.qiniu.com  
    Content-Type: application/x-www-form-urlencoded  
    Authorization: QBox <AccessToken>  
    
    bucket=qiniu-developer
    &key=1.png
    &fops=mkzip%2f2%2furl%2faHR0cDovLzc4cmU1Mi5jb20xLnowLmdsYi5jbG91ZGRuLmNvbS9yZXNvdXJjZS9nb2dvcGhlci5qcGc=%2falias%2fbWt6aXB0ZXN0%2furl%2faHR0cDovLzc4cmU1Mi5jb20xLnowLmdsYi5jbG91ZGRuLmNvbS9yZXNvdXJjZS9kaXZlLWludG8tZ29sYW5nLnBwdHg=%2furl%2faHR0cDovLzc4cmU1Mi5jb20xLnowLmdsYi5jbG91ZGRuLmNvbS9yZXNvdXJjZS90aGlua2luZy1pbi1nby5tcDQ=
    

    其中,请求 body 中的 key = 1.png 仅仅为符合pfop操作的接口规格而存在,并没有实际的意义,但需要是操作空间中存在的资源的 key。

    大量文件压缩(mode=4)

    为了将大量文件压缩,可以将待压缩文件URL写入一个索引文件,上传至bucket,再对该索引文件进行的mkzip操作。

    索引文件格式为:

    /url/<Base64EncodedURL1>[/alias/<Base64EncodedAlias1>]
    /url/<Base64EncodedURL2>[/alias/<Base64EncodedAlias2>]
    ... ...
    /url/<Base64EncodedURLN>[/alias/<Base64EncodedAliasN>]
    
    参数说明 必填 说明
    /url/<Base64EncodedURLN> 至少一项 需要被压缩资源(这些资源必须处于同一个 bucket 下)的 URL,必须是公网可访问资源,在请求中需要经过URL安全的Base64编码
    /alias/<Base64EncodedAliasN> 可选 资源在压缩文件中的别名,需要经过URL安全的Base64编码,若不指定则为 url 中资源的原文件名。

    注意

    • 每一行填写一个待压缩文件URL及重命名参数
    • 索引文件必须和目标资源文件在同一个bucket内
    • 资源总数目不超过3000个,总文件大小不超过45000MB

    接口规格

    POST /pfop/ HTTP/1.1
    Host: api.qiniu.com
    Content-Type: application/x-www-form-urlencoded
    Authorization: Qbox <AccessToken>
        
    bucket=<bucket>&key=<key>&fops=<mkzipArgs>
    
    参数名称 必填 说明
    <bucket> 必填 存储空间名
    <key> 必填 key即为上面的索引文件
    <mkzipArgs> 必填 mkzipArgs 规格说明如下

    其中 mkzipArgs 规格为:

    mkzip/<mode>
         /encoding/<UrlsafeBase64EncodedEncoding>
    
    参数名称 必填 说明
    <Mode> 必填 取值为 4,用于大量文件压缩。
    /encoding/<UrlsafeBase64EncodedEncoding> 可选 指示压缩包内资源命名的编码,目前支持 gbk 和 utf-8,默认 utf-8。

    示例

    持久化处理的形式:

    1. 将下列地址的三个文件压缩上传到空间中, 压缩后的文件名字为 mode4.zip
    • http://ogtoywd4d.bkt.clouddn.com/resource/gogopher.jpg
    • http://ogtoywd4d.bkt.clouddn.com/resource/dive-into-golang.pptx
    • http://ogtoywd4d.bkt.clouddn.com/resource/thinking-in-go.mp4
    1. 默认这三个文件在压缩文件中的名字分别为 gogopher.jpg、 dive-into-golang.pptx、thinking-in-go.mp4。
    2. 假如我们想将 http://ogtoywd4d.bkt.clouddn.com/resource/gogopher.jpg 保存在压缩文件中的名字替换为mkziptest
    3. 那么最后的索引文件格式为mkzip-index.txt,这个时候我们需要上传改索引文件到您要保存的bucket中, 假如保存在bucket中的文件名字为mkzip-index.txt,那么最后的请求命令如下:
    POST /pfop/ HTTP/1.1
    Host: api.qiniu.com  
    Content-Type: application/x-www-form-urlencoded  
    Authorization: QBox <AccessToken>  
    
    bucket=qiniu-developer&key=mkzip-index.txt&fops=mkzip/4/|saveas/cWluaXUtZGV2ZWxvcGVyOm1remlwNC56aXA=
    

    其中 cWluaXUtZGV2ZWxvcGVyOm1remlwNC56aXA= 是由 qiniu-developer:mkzip4.zip 经过 URL 安全的 Base64 编码生成。

    操作方式

    多文件压缩接口,目前只能以 持久化处理 形式来使用。

    以上内容是否对您有帮助?
  • Qvm free helper
    Close