116
Object接口 > 批量操作

批量操作意指在单一请求中执行多次获取元信息、移动、复制、删除操作,极大提高资源管理效率。

请求报文

请求地址:

rs.qiniu.com

  • 请求语法
POST /batch HTTP/1.1
Host: rs.qiniu.com
Content-Type: application/x-www-form-urlencoded
Authorization: QBox <AccessToken>
op=<Operation>&op=<Operation>&...

注意:要在 Authorization 头部的<AccessToken>前添加 QBox 和半角空格。其中op=<Operation>是单一资源管理指令(如:/stat/<EncodeEntryURI>/delete/<EncodeEntryURI>)。

  • 访问权限

管理凭证方式。

  • 头部信息
头部名称必填说明
Content-Type固定为 application/x-www-form-urlencoded
Authorization该参数应严格按照管理凭证格式进行填充,否则会返回401错误码
一个合法的 Authorization 值应类似于:QBox QNJi_bYJlmO5LeY08FfoNj9w_r7..
  • 请求内容
#批量获取元信息
op=/stat/<EncodedEntryURI>&op=/stat/<EncodedEntryURI>&...

#批量复制资源
op=/copy/<EncodedEntryURISrc>/<EncodedEntryURIDest>&op=/copy/<EncodedEntryURISrc>/<EncodedEntryURIDest>&.../force/<true|false>

#批量移动资源
op=/move/<EncodedEntryURISrc>/<EncodedEntryURIDest>&op=/move/<EncodedEntryURISrc>/<EncodedEntryURIDest>&.../force/<true|false>

#批量删除资源
op=/delete/<EncodedEntryURI>&op=/delete/<EncodedEntryURI>&...

#混合多种操作
op=/stat/<EncodedEntryURI>&op=/copy/<EncodedEntryURISrc>/<EncodedEntryURIDest>/force/<true|false>&op=/move/<EncodedEntryURISrc>/<EncodedEntryURIDest>&.../force/<true|false> &op=/delete/<EncodedEntryURI>&...

响应报文

  • 响应语法
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
  • 头部信息
头部名称必填说明
Content-Type正常情况下该值将被设为application/json,表示返回JSON格式的文本信息。
  • 响应内容
#批量获取元信息
[
    { "code": <HttpCode int>, "data": <Data> },
    { "code": <HttpCode int>, "data": <Data> },
    { "code": <HttpCode int>, "data": { "error": "<ErrorMessage string>" } },
    ...
]

#批量复制资源
[
    { "code": <HttpCode int> },
    { "code": <HttpCode int> },
    { "code": <HttpCode int>, "data": { "error": "<ErrorMessage string>" } },
    ...
]

#批量移动资源
[
    { "code": <HttpCode int> },
    { "code": <HttpCode int> },
    { "code": <HttpCode int>, "data": { "error": "<ErrorMessage string>" } },
    ...
]

#批量删除资源
[
    { "code": <HttpCode int> },
    { "code": <HttpCode int> },
    { "code": <HttpCode int>, "data": { "error": "<ErrorMessage string>" } },
    ...
]

#混合多种操作
[
    { "code": <HttpCode int>, "data": <Data> },
    { "code": <HttpCode int> },
    { "code": <HttpCode int> },
    { "code": <HttpCode int> },
    { "code": <HttpCode int>, "data": { "error": "<ErrorMessage string>" } },
    ...
]
  • 响应状态码
HTTP状态码含义
200所有请求操作都已成功完成
298部分或所有请求操作失败
400请求报文格式错误
401管理凭证无效
599服务端操作失败

示例

functon deletebatchfile($accessKeyk, $secretKey, $bucket, $keys)
{
    $authObj = new Auth($accessKey, $secretKey);
    $http = new Http();
    //生成批量删除资源body
    $body = '';
    foreach ($keys as $key) {
        if ($body == '') {
            $body .= 'op=/delete/' . $authObj->entry($bucket, $key);
        } else {
            $body .= '&op=/delete/' . $authObj->entry($bucket, $key);
        }
    }
    $url = "http://rs.qiniu.com/batch";
    $headers = $authObj->getHeaders($url, $body, 'application/x-www-form-urlencoded');
    // 创建一个新cURL资源
    $curl = curl_init();
    // 设置URL和相应的选项
    curl_setopt($curl, CURLOPT_URL, $url);
    //CURLOPT_HEADER为true设置头文件的信息作为数据流输出
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_TIMEOUT, 60);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, strtoupper('POST'));
    curl_setopt($curl, CURLOPT_POST, true);
    $result = curl_exec($curl);
    curl_close($curl);
    return $result;
}
$accessKey = 'xxx';
$secretKey = 'xxx';
$bucket = '123_1';//存储空间名称
$keys = ['132.jpg', 'index.php']; //文件列表
echo deletebatchfile($accessKeyk, $secretKey, $bucket, $keys);

这条帮助是否解决了您的问题? 已解决 未解决

提交成功!非常感谢您的反馈,我们会继续努力做到更好! 很抱歉未能解决您的疑问。我们已收到您的反馈意见,同时会及时作出反馈处理!