文档管理中心
API参考云存储ServerREST API获取文件元数据

获取文件元数据

功能介绍

此接口用于获取文件元数据。

接口原型

承载协议

HTTPS GET

接口方向

开发者服务器->华为服务器

接口URL

https://{domain}/{bucket_name}/{object_name}?metadata=query

注意
  • {bucket_name}为当前存储实例名称,{object_name}为文件名称。
  • {domain}为接口域名。
    • 中国站点的域名:ops-server-drcn.agcstorage.link/v0
    • 德国站点的域名:ops-server-dre.agcstorage.link/v0
    • 新加坡站点的域名:ops-server-dra.agcstorage.link/v0
    • 俄罗斯站点的域名:ops-server-drru.agcstorage.link/v0
  • 调用获取Token接口时使用的站点必须与本接口使用的站点保持一致。例如本接口使用的站点是德国,即接口域名为“ops-server-dre.agcstorage.link/v0”,则调用获取Token接口也必须使用德国站点,其接口域名需为“connect-api-dre.cloud.huawei.com”。

数据格式

请求:Content-Type: application/json

响应:Content-Type: application/json

请求参数

Header

展开

参数

类型

必选(M)/可选(O)

说明

Authorization

String

M

认证信息,格式为“Authorization: Bearer ${access_token}”。access_token为获取Token中获取的access_token。

client_id

String

M

客户端ID,获取方法参考创建API客户端

productId

String

M

项目ID,查询方法可参见查询项目ID

X-Agc-Trace-Id

String

O

单个文件请求的Traceid。可不填或者随机生成,用于日志打印跟踪。

请求示例

收起
自动换行
深色代码主题
复制
  1. GET /v0/testagc-02reg/test.jpg
  2. client_id: 849033****232064
  3. productId: 73643****61998
  4. Content-Type: application/json
  5. Authorization: Bearer ****
  6. User-Agent: PostmanRuntime/7.6.0
  7. Accept: */*
  8. Host: ops-server-drcn.agcstorage.link
  9. accept-encoding: gzip, deflate

响应参数

Header

展开

参数

类型

必选(M)/可选(O)

说明

status

Integer

M

HTTP响应码,200表示成功。

X-Agc-Trace-Id

String

O

单个文件请求的Traceid,与请求参数X-Agc-Trace-Id保持一致。

Body

展开

属性

类型

必选(M)/可选(O)

说明

productId

String

M

项目ID。

name

String

M

文件名称。

bucket

String

M

存储实例名称。

storageArea

String

M

存储区域名称。

storageRegion

String

M

后端OBS存储站点。

storageType

String

M

存储类型。

contentType

String

M

文件类型。Content-Type标头告诉客户端实际返回的内容类型。

contentDisposition

String

O

文件打开方式,响应头指示回复的内容该以何种形式展示,是以内联的形式(即网页的一部分),还是以附件的形式下载并保存到本地。

cacheControl

String

O

标准HTTP请求头字段Cache-Control。

  • public:文件可缓存到任何位置。
  • private:文件可以缓存到请求者的本地缓存中。
  • no-cache:文件可以缓存,但有请求发出时,缓存会将此请求发到服务器,服务器验证请求中所描述的缓存是否过期,若未过期,返回304,缓存可使用,否则不可使用。
  • no-store:缓存中不得存储任何关于客户端请求和服务端响应的内容。
  • max-age=TIME_IN_SECONDS:文件可缓存的时长。

contentEncoding

String

O

标准HTTP请求头Content-Encoding,是一个实体消息首部,用于对特定媒体类型的数据进行压缩。当这个首部出现的时候,它的值表示消息主体进行了何种方式的内容编码转换。

contentLanguage

String

O

标准HTTP请求头 Content-Language,用来说明访问者希望采用的语言或语言组合,这样的话用户就可以根据自己偏好的语言来定制不同的内容。

sha256

String

O

文件SHA256值。

size

long

M

文件大小。

createTime

String

M

上传时间,时间日期格式:yyyy-MM-ddTHH:mm:ssZ。

updateTime

String

M

更新时间,时间日期格式:yyyy-MM-ddTHH:mm:ssZ。

metadata

Map<String,String>

O

元数据,用户自定义元数据。

响应示例

收起
自动换行
深色代码主题
复制
  1. HTTP/1.1 200
  2. status: 200
  3. Date: Mon, 27 Mar 2023 03:01:32 GMT
  4. Content-Type: text/plain
  5. Transfer-Encoding: chunked
  6. Connection: keep-alive
  7. X-Agc-Trace-Id: 98b5dbf2-d7ad-4c13-9858-c829480cf3ba
  8. Server: elb
  9. {"name":"test.jpg","metadata":{},"createTime":"2022-12-10T10:13:46Z","updateTime":"2022-12-10T10:13:46Z","storageArea":"CN","size":29797,"storageRegion":"cn-north-4","productId":"736430****1998","storageType":"STANDARD","bucket":"testagc-02reg","contentType":"image\/jpeg"}

调用示例

收起
自动换行
深色代码主题
复制
  1. import com.alibaba.fastjson.JSON;
  2. import com.alibaba.fastjson.JSONObject;
  3. import lombok.Builder;
  4. import lombok.Getter;
  5. import lombok.Setter;
  6. import lombok.ToString;
  7. import lombok.extern.slf4j.Slf4j;
  8. import org.apache.commons.collections4.MapUtils;
  9. import org.apache.http.Consts;
  10. import org.apache.http.HttpStatus;
  11. import org.apache.http.client.methods.CloseableHttpResponse;
  12. import org.apache.http.client.methods.HttpGet;
  13. import org.apache.http.client.utils.URIBuilder;
  14. import org.apache.http.impl.client.CloseableHttpClient;
  15. import org.apache.http.impl.client.HttpClients;
  16. import org.junit.Ignore;
  17. import java.io.BufferedReader;
  18. import java.io.InputStreamReader;
  19. import java.util.HashMap;
  20. import java.util.Map;
  21. /**
  22. * 元数据管理REST API示例代码
  23. */
  24. @Slf4j
  25. public class MetadataManagingTest {
  26. /**
  27. * 查询元数据信息
  28. *
  29. * @param storageUrl 云存储url
  30. * @param param 查询元数据接口入参
  31. * @return 元数据信息
  32. * @throws Exception 异常
  33. */
  34. public static ObjectMetadata getObjectMetadata(String storageUrl, ObjectMetadataParam param) throws Exception {
  35. URIBuilder uriBuilder =
  36. new URIBuilder(storageUrl + param.getBucketName() + "/" + param.getObjectName() + "?metadata=query");
  37. HttpGet get = new HttpGet(uriBuilder.build());
  38. get.setHeader("productId", param.getProjectId());
  39. get.setHeader("client_id", param.getClientId());
  40. get.setHeader("Authorization", "Bearer " + param.getToken());
  41. CloseableHttpClient httpClient = HttpClients.createDefault();
  42. CloseableHttpResponse httpResponse = httpClient.execute(get);
  43. int statusCode = httpResponse.getStatusLine().getStatusCode();
  44. if (statusCode == HttpStatus.SC_OK) {
  45. BufferedReader br =
  46. new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent(), Consts.UTF_8));
  47. String result = br.readLine();
  48. JSONObject object = JSON.parseObject(result);
  49. log.info("getObjectMetadata result:{}", object.toJSONString());
  50. return JSONObject.toJavaObject(object, ObjectMetadata.class);
  51. } else {
  52. log.error("getObjectMetadata error, statusCode:{}", statusCode);
  53. return null;
  54. }
  55. }
  56. public void client() throws Exception {
  57. String clientToken = TokenServiceTest.getToken("https://connect-api.cloud.huawei.com/api/", "84903XXXXXX32064",
  58. "00E5CCADB655891XXXXXXXXXXXX8CDCC83ACF22");
  59. ObjectMetadataParam param = ObjectMetadataParam.builder()
  60. .projectId("73643XXXXXX61998")
  61. .clientId("84903XXXXXX32064")
  62. .token(clientToken)
  63. .bucketName("test-q36q0")
  64. .objectName("sha256/test3.jpg")
  65. .build();
  66. getObjectMetadata("https://ops-server-drcn.agcstorage.link/v0/", param);
  67. }
  68. public static void main(String[] args) throws Exception {
  69. new MetadataManagingTest().client();
  70. }
  71. @Builder
  72. @Getter
  73. static class ObjectMetadataParam {
  74. // 项目ID
  75. String projectId;
  76. // 客户端ID
  77. String clientId;
  78. // clientToken
  79. String token;
  80. // 云存储实例名
  81. String bucketName;
  82. // 待下载的文件的对象名,需要携带路径。
  83. String objectName;
  84. Map<String, String> metadata;
  85. }
  86. /**
  87. * 文件的元数据
  88. */
  89. @Getter
  90. @Setter
  91. @ToString
  92. static class ObjectMetadata {
  93. // 项目Id
  94. private String productId;
  95. // 存储的实例名
  96. private String bucket;
  97. // 存储的区域
  98. private String storageArea;
  99. // 后端OBS存储站点
  100. private String storageRegion;
  101. // 存储的类型
  102. private String storageType;
  103. // 文件名
  104. private String name;
  105. // 文件类型
  106. private String contentType;
  107. // 上传时间,时间日期格式:yyyy-MM-ddTHH:mm:ssZ
  108. private String createTime;
  109. // 更新时间,时间日期格式:yyyy-MM-ddTHH:mm:ssZ
  110. private String updateTime;
  111. // 文件大小
  112. private long size;
  113. // 可选,元数据,用户自定义元数据
  114. private Map<String, String> metadata;
  115. // 可选,标准HTTP请求头Content-Language
  116. private String contentLanguage;
  117. // 可选,标准HTTP请求头Content-Encoding
  118. private String contentEncoding;
  119. // 可选,标准HTTP请求头Cache-Control
  120. private String cacheControl;
  121. // 可选,文件打开方式
  122. private String contentDisposition;
  123. }
  124. }
在 API参考 中进行搜索
请输入您想要搜索的关键词