详情页标题前

腾讯云对象存储ReturnBody

详情页1

用户可以通过在上传请求(PUT Object、POST Object、CompleteMultipartUploads)中携带 ReturnBody 参数,在请求返回中获取对象相关信息。

系统变量

上传回调 ReturnBody 支持使用的系统变量如下表所示:注意:exif、videoinfo、imageinfo 信息的获取依赖数据万象(Cloud Infinite,CI)服务的能力。获取这三类变量,会由 CI 服务收取相应的费用,详情可参考 数据万象计费概述

变量名 变量说明 是否包含子变量 是否必选
bucket 对象上传的目标存储桶。
object 对象上传到存储桶内,使用的对象名称。
size 对象大小,单位为 Byte。
region 对象上传的存储桶所在地域。
mimeType 对象元数据 Content-Type。
exif 如果上传的对象为图片类型,支持查看图片的 exif 信息,变量填写格式为 ${exif.子变量}注意:为了避免 ReturnBody 携带的内容太多,影响接口性能,不支持直接填写${exif},必须写明具体的子变量。
videoInfo 如果上传的对象为音视频类型,支持查看音视频资源的元信息。变量填写格式为 ${videoInfo.子变量}注意:为了避免 ReturnBody 携带的内容太多,影响接口性能,不支持直接填写${imageInfo},必须写明具体的子信息项。
imageInfo 如果上传的对象为图片类型,支持查看图片的基本信息,变量填写格式为 ${imageInfo.子变量}注意:为了避免 ReturnBody 携带的内容太多,影响接口性能,不支持直接填写${videoInfo},必须写明具体的子变量。

其中,使用 exif、imageInfo、videoInfo 变量时,需要注意以下几点:这三类变量仅支持在国内公有云地域使用。获取这三类变量依赖数据万象(Cloud Infinite,CI)服务的能力。用户需要开通 CI 服务,并保证 COS 服务角色有权调用 CI 服务。获取这三类变量,会由CI 服务收取相应的费用,详情可参考 数据万象计费概述支持子变量,例如${变量名.子变量}${变量名.二级子变量}。并且,为了避免 ReturnBody 携带的内容太多,影响接口性能,不支持直接填写${imageInfo},必须写明具体的子变量。变量支持的具体子变量,可参考数据万象和媒体处理服务的产品文档exif:获取图片 EXIFimageInfo: 获取图片基本信息videoInfo:获取媒体信息

使用步骤

步骤一:构造 ReturnBody 参数

1. 将希望获取的对象信息以 json 格式表示。如下示例中 bucket、key、myfilesize、height 为用户可自定义的参数名称,变量名使用 ${}包裹,变量名对应的值是需要获取的回调信息。ReturnBody 支持的变量名,请参见上方的 系统变量。示例如下:

{ "bucket": "${bucket}", "key": "${object}", "myfilesize": "${size}", "height": "${imageInfo.height}"}

2. 将以上 json 格式转换为字符串,并进行 Base64 编码。

eyJidWNrZXQiOiAiJHtidWNrZXR9IiwgImtleSI6ICIke29iamVjdH0iLCAibXlmaWxlc2l6ZSI6ICIke3NpemV9IiwgImhlaWdodCI6ICIke2ltYWdlSW5mby5oZWlnaHR9In0=

步骤二:在上传对象的请求中携带 ReturnBody 参数

1. PUT Object 请求中,通过请求头部 x-cos-return-body 传入 Base64 编码的结果。请求示例如下:

PUT /<ObjectKey> HTTP/1.1Host: <BucketName-APPID>.cos.<Region>.myqcloud.comDate: GMT DateContent-Type: Content TypeContent-Length: Content LengthContent-MD5: MD5x-cos-return-body: eyJidWNrZXQiOiAiJHtidWNrZXR9IiwgImtleSI6ICIke29iamVjdH0iLCAibXlmaWxlc2l6ZSI6ICIke3NpemV9IiwgImhlaWdodCI6ICIke2ltYWdlSW5mby5oZWlnaHR9In0=Authorization: Auth String
[Object Content]

2. POST Object 请求中,通过表单字段 x-cos-return-body 传入 Base64 编码的结果。

POST / HTTP/1.1Host: examplebucket-1250000000.cos.ap-beijing.myqcloud.comDate: Thu, 29 Aug 2019 07:39:34 GMTContent-Type: multipart/form-data; boundary=----WebKitFormBoundaryZBPbaoYE2gqeB21NContent-Length: 1119Connection: close
------WebKitFormBoundaryZBPbaoYE2gqeB21NContent-Disposition: form-data; name="key"
exampleobject------WebKitFormBoundaryZBPbaoYE2gqeB21NContent-Disposition: form-data; name="x-cos-return-body"
eyJidWNrZXQiOiAiJHtidWNrZXR9IiwgImtleSI6ICIke29iamVjdH0iLCAibXlmaWxlc2l6ZSI6ICIke3NpemV9IiwgImhlaWdodCI6ICIke2ltYWdlSW5mby5oZWlnaHR9In0=------WebKitFormBoundaryZBPbaoYE2gqeB21NContent-Disposition: form-data; name="file"; filename="example.jpg"Content-Type: image/jpeg
[Object Content]------WebKitFormBoundaryZBPbaoYE2gqeB21N--

3. Complete Multipart Uploads 请求中,通过请求头部 x-cos-return-body 传入 Base64 编码的结果。

POST /exampleobject?uploadId=UploadId HTTP/1.1Host: exmaplebucket-1250000000.cos.region.myqcloud.comx-cos-return-body: eyJidWNrZXQiOiAiJHtidWNrZXR9IiwgImtleSI6ICIke29iamVjdH0iLCAibXlmaWxlc2l6ZSI6ICIke3NpemV9IiwgImhlaWdodCI6ICIke2ltYWdlSW5mby5oZWlnaHR9In0=Date: GMT DateContent-Type: application/xmlContent-Length: Content LengthContent-MD5: MD5Authorization: Auth String
[Request Body]

步骤三:获取请求返回中的 ReturnBody 信息

1. PUT Object 的返回,将按照 json 格式在响应体中返回对象信息。响应示例如下:

HTTP/1.1 200 OKx-cos-request-id: NWU5MDNkZjVfYzVjNzJhMDlfMjVhNzNfMWMy****
{ "bucket": "examplebucket-1250000000000", "key": "test.jpeg", "size": 214513}

2. POST Object 的返回,将按照 json 格式在响应体中返回对象信息。响应示例如下:

HTTP/1.1 201 OKx-cos-request-id: NWU5MDNkZjVfYzVjNzJhMDlfMjVhNzNfMWMy****
{ "bucket": "examplebucket-1250000000000", "key": "test.mp4", "video_duration": 1000, "video_numFrames": 1000}

3. Complete Multipart Uploads 请求本身返回了 xml 请求体,其中包含了分块上传的相关的重要信息。因此,ReturnBody 相关信息(对象信息、ReturnBody 计算是否成功等)会被放在 XML 字段 ReturnBodyResult 中,返回给用户。ReturnBodyResult 节点说明如下:

节点名称(关键字) 父节点 描述 类型
ReturnBodyResult CompleteMultipartUploadResult ReturnBody 的结果信息。 Container
Status CompleteMultipartUploadResult.ReturnBodyResult ReturnBody 获取是否成功。枚举值支持 200、203。200表示上传成功、获取 ReturnBody 成功;203表示上传成功,获取 ReturnBody 失败。 Integer
Error CompleteMultipartUploadResult.ReturnBodyResult Status 为203时,说明获取 returnbody 失败。返回 Error,说明回调失败信息。 Container
Code CompleteMultipartUploadResult.ReturnBodyResult 回调失败信息的错误码,例如 GetReturnBodyFailed。 String
Message CompleteMultipartUploadResult.ReturnBodyResult ReturnBody 获取失败的错误信息。 String
ReturnBody CompleteMultipartUploadResult.ReturnBodyResult Status 为200时,说明上传成功、回调成功,返回 ReturnBody。内容为 ReturnBody 的 json 字符串 base64 编码后的字符串。 String

响应示例如下:

HTTP/1.1 200 OKContent-Type: application/xml
<CompleteMultipartUploadResult> <Location>http://examplebucket-1250000000.cos.ap-beijing.myqcloud.com/exampleobject</Location> <Bucket>examplebucket-1250000000</Bucket> <Key>exampleobject</Key> <ETag>"aa259a62513358f69e98e******"</ETag> <ReturnBodyResult> <Status>200|203</Status> <!--Status为203时,说明ReturnBody失败,返回 Error--> <Error> <Code>GetReturnBodyFailed</Code> <Message>Invalid return body params.</Message> </Error> <!--Status为200时,说明上传成功、ReturnBody计算成功,返回 json 字符串 base64 编码后的结果。--> <ReturnBody> eyJhIjogImIifQ== </ReturnBody> </ReturnBodyResult></CompleteMultipartUploadResult>

返回码

在上传请求中使用 ReturnBody 参数后,返回码主要有以下几种情况:上传请求成功,获取 ReturnBody 成功,返回200。上传请求成功,获取 ReturnBody 失败:

失败原因 返回码 ErrorCode Message
ReturnBody 参数不合法。 203 GetReturnBodyFailed Invalid return body params.
调用数据万象服务,由于访问无权限、未开通服务等原因导致参数获取失败。 203 GetReturnBodyFailed Error status from ci: ${code}, should return 200 OK.其中,${code}为数据服务返回的错误码,例如 400、403等。

上传失败。将不会触发 ReturnBody 计算,返回的错误码和信息遵循普通上传请求的规则。
对象存储官网1折活动,限时活动,即将结束,速速收藏
同尘科技腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

转转请注明出处:https://www.yunxiaoer.com/144998.html

(0)
上一篇 2023年12月9日
下一篇 2023年12月9日
详情页2

相关推荐

  • 腾讯云对象存储存储桶策略

    简介 本文档提供关于存储桶策略的 API 概览以及 SDK 示例代码。 API 操作名 操作描述 PUT Bucket policy 设置存储桶策略 设置指定存储桶的权限策略 GET Bucket policy 查询存储桶策略 查询指定存储桶的权限策略 DELETE Bucket policy 删除存储桶策略 删除指定存储桶的权限策略 设置存储桶策略 功能说…

    腾讯云 2023年12月9日
  • 腾讯云对象存储设置自定义 DNS

    简介 本文档提供关于如何使用自定义 DNS 请求 COS 服务。 设置动态自定义 DNS 回调 更推荐此方式,因为更灵活,更方便业务层控制。 示例代码 // 一般在初始化密钥后进行设置await Cos().initCustomerDNSFetch(FetchDns());import ‘package:flutter/foundation.dart’;i…

    腾讯云 2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 数据传输DTS验证PrisonRoomDoorIP2_有没有谁知道怎么回事?-云小二-阿里云

    数据传输DTS验证PrisonRoomDoorIP2_FULL_20231216083217.bak失败,错误消息:数据库备份在运行版本16.00.1000的服务器上。那版本与这台服务器不兼容,这台服务器运行的版本是13.00.6430。在支持备份的服务器上还原数据库,或使用与此服务器兼容得备份VERIFY DATABASE异常终止。有没有谁知道怎么回事? …

    阿里云 2023年12月20日
  • 腾讯云MYSQL到阿里云数据传输DTS数据同步支持吗?如果可以的话这里该怎么选?-云小二-阿里云

    腾讯云MYSQL到阿里云数据传输DTS数据同步支持吗?如果可以的话这里该怎么选? 以下为热心网友提供的参考意见 支持的,配置任务时可以将腾讯云mysql作为自建mysql进行配置 1. 如果做数据同步需要内网条件,可通过CEN、VPN、数据库网关方式打通腾讯云mysq的内网,详细参考https://help.aliyun.com/zh/dts/user-gu…

    2023年12月28日
  • DataWorks支不支持这样写?-云小二-阿里云

    DataWorks支不支持这样写?就是更新的时候指定哪几列作为主键,不指定的话默认就是用数据库的主键或唯一索引作为唯一表示行 以下为热心网友提供的参考意见 这个不支持的 目前只能按照目标端本身谁在的主键或唯一键 ,此回答整理自钉群“DataWorks交流群(答疑@机器人)” 以下为热心网友提供的参考意见 在DataWorks中,您可以在更新时指定某些列作为主…

    2023年12月17日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。