| Object接口 > 资源移动/重命名 | ||||||||||||||||||||||||||||||||
|
将源空间的指定资源移动到目标空间,或在同一空间内对资源重命名。如果目标资源名已被占用,则返回错误码614,且不做任何覆盖操作。 注意:
|
| 头部名称 | 必填 | 说明 |
|---|---|---|
| Authorization | 是 | 该参数应严格按照管理凭证格式进行填充,否则会返回401错误码 一个合法的Authorization值应类似于:QBox QNJi_bYJlmO5LeY08FfoNj9w_r7… |
HTTP/1.1 200 OK Content-Type: application/json Cache-Control: no-store
| 头部名称 | 必填 | 说明 |
|---|---|---|
| Content-Type | 是 | 正常情况下该值将被设为application/json,表示返回JSON格式的文本信息。 |
如果请求成功,不返回任何内容。
如果请求失败,返回包含如下内容的JSON字符串
{
"error": "<errMsg string>",
}| 字段名称 | 必填 | 说明 |
|---|---|---|
| error | 是 | 与HTTP状态码对应的消息文本 |
| HTTP状态码 | 含义 |
|---|---|
| 200 | 移动成功 |
| 400 | 请求报文格式错误 |
| 401 | 管理凭证无效 |
| 599 | 服务端操作失败 |
| 612 | 待移动资源不存在 |
| 614 | 目标资源已存在 |
请求示例:
POST /move/bmV3ZG9jczpmaW5kX21hbi50eHQ=/bmV3ZG9jczpmaW5kLm1hbi50eHQ= HTTP/1.1 User-Agent: curl/7.30.0 Host: rs.qiniu.com Accept: */* Authorization: Qiniu u8WqmQu1jH21kxpIQmo2LqntzugM1VoHE9_pozCU:2LJIG..
响应示例:
HTTP/1.1 200 OK Server: nginx/1.0.8 Date: Thu, 05 Dec 2019 11:55:29 GMT Content-Type: application/json Connection: keep-alive Content-Length: 0 X-Reqid: wxIAAD3btw-v3TwT
function moveFile ($ak,$sk,$from_bucket,$from_key,$to_bucket,$to_key)
{
$authObj = new Auth($ak, $sk);
$http = new Http();
//生成url
$from = $authObj->entry($from_bucket, $from_key);
$to = $authObj->entry($to_bucket, $to_key);
$path = '/move/' . $from . '/' . $to;
if ($force) {
$path .= '/force/true';
}
$url = "http://rs.qiniu.com{$path}";
$headers = $authObj->getHeaders($url, null, '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;
}
$ak = 'xxx';
$sk = 'xxx';
//如果是重命名文件,则$from_bucket和$to_bucket是同一个值
$from_bucket = '123_1';//待操作资源所在空间
$from_key = 'QQ图片20200605093453.jpg';//待操作资源文件名
$to_bucket = '123_5';//目标资源空间名
$to_key = 'QQ图片20200605093453.jpg';//目标资源文件名
$force = false; //true:强制覆盖 false:不覆盖
echo moveFile($ak,$sk,$from_bucket,$from_key,$to_bucket,$to_key,$force = false);