116
Object接口 > 资源元信息修改

修改文件的 MIME 类型信息。

请求报文

请求地址:

rs.qiniu.com

  • 请求语法
POST /chgm/<EncodedEntryURI>/mime/<EncodedMimeType>/x-qn-meta-<meta_key>/<EncodedMetaValue>/cond/<Encodedcond> HTTP/1.1
Host: rs.qiniu.com
Content-Type: application/x-www-form-urlencoded
Authorization: QBox <AccessToken>

EncodedMimeType编码前的明文要设置新的mimeType。meta_key可以自定义,它可以由字母、数字、下划线、减号组成,且长度小于等于50,单个文件 meta_key 和 metavalue 总和大小不能超过 1024 字节,可以同时修改多个 meta 字段,metavalue 规则和 mimeType 相同。cond当前支持设置hash、mime、fsize、putTime条件,只有条件匹配才会执行修改操作,Encodedcond中的cond支持condKey1=condVal1&condKey2=condVal2格式。

  • 访问权限

管理凭证方式。

  • 头部信息
头部名称必填说明
Authorization该参数应严格按照管理凭证格式进行填充,否则会返回401错误码
一个合法的Authorization值应类似于:QBox bt500PzCG9tV0bccCOdnrmC…

mimeType命名规则:

目前所有的mimetype包括如下字符集:a-z, A-Z, 0-9, ., +, /, -。

因为mimetype日后还会增加,为保证兼容将增加如下字符;,=,,,_和空格。

目前mimetype最大长度为79, 为保证兼容将来限制最大长度为200。

mimetype为空这里认为合法,因为如果为空后面会进一步检测并设置。

mimetype可以包括空格,例如:text/plain; charset=iso-8859-1。

禁止转义,如%0A表示\n,所以禁止出现%。

响应报文

  • 响应语法
HTTP/1.1 200 OKContent-Type: application/jsonCache-Control: no-store
  • 头部信息
头部名称必填说明
Content-Type正常情况下该值将被设为application/json,表示返回JSON格式的文本信息。
  • 响应内容

如果请求成功,不返回任何内容。

如果请求失败,返回包含如下内容的JSON字符串

{
"error": "<errMsg string>"
}
字段名称必填说明
error与HTTP状态码对应的消息文本
  • 响应状态码
HTTP状态码含义
200更改成功
400请求报文格式错误
401管理凭证无效
612目标资源不存在
613当cond条件不满足时,返回613 {“error”: “cond not match”}
599服务端操作失败

示例

  • 命令行示例
curl -i \
-o - \
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'Authorization: QBox bt500PzCG9tV0bccCOdnrmCHPXCPLieGSDEprB7M:4wG...' \
-X POST \
'http://rs.qiniu.com/chgm/YnVja2V0OmtleQ==/x-qn-meta-meta_key/bWV0YV92YWx1ZQ==/cond/ZnNpemU9Ng=='
  • 请求示例
POST /chgm/YnVja2V0OmtleQ==/x-qn-meta-meta_key/bWV0YV92YWx1ZQ==/cond/ZnNpemU9Ng== HTTP/1.1
Host: rs.qiniu.com
User-Agent: Go-http-client/1.1
Content-Length: 0
Authorization: QBox EmEtww5prO5pe8ts_mG.......1tXlEQ9hoG4:LuGCwpfK-rM=
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip

注意:要在Authorization头部的AccessToken前添加QBox和半角空格。

  • 响应示例
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 23 Jun 2017 10:23:18 GMT
Content-Type: application/json
Content-Length: 0
Connection: keep-alive
X-Log: rs35_17.sel;.........;RS:2;ZONEPROXY:4
X-Reqid: -nIAABnfaeIlucoU

示例

function changeMime($accessKey,$secretKey,$bucket,$key,$mime)
{
    $authObj = new Auth($accessKey, $secretKey);
    $http = new Http();
    $resource = $authObj->entry($bucket, $key);
    $encode_mime = $authObj->base64_urlSafeEncode($mime);
    $url = "http://rs.qiniu.com/chgm/{$resource}/mime/{$encode_mime}";
    $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;
}
$accessKey = 'xxx';
$secretKey = 'xxx';
$bucket = '123_1';//存储空间名称
$key = 'Postman.exe';//文件名
$mime = 'image/jpeg';//待操作文件目标mimeType
echo changeMime($accessKey,$secretKey,$bucket,$key,$mime);

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

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