文件元信息(Object Meta)包括HTTP header和自定义元信息。
详情请参见开发指南中的文件元信息。
设置HTTP header
以下代码用于设置HTTP header:
# -*- coding: utf-8 -*- import oss2 # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。 auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>') # Endpoint以杭州为例,其它Region请按实际情况填写。 bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>') bucket.put_object('<yourObjectName>', '{"age": 1}', headers={'Content-Type': 'application/json; charset=utf-8'})
HTTP header详情请参见RFC2616。
设置自定义元信息
您可以自定义文件的元信息来对文件进行描述。
以下代码用于设置文件的自定义元信息:
# -*- coding: utf-8 -*- import oss2 # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。 auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>') # Endpoint以杭州为例,其它Region请按实际情况填写。 bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>') bucket.put_object('<yourObjectName>', 'a novel', headers={'x-oss-meta-author': 'O. Henry', 'Content-Type': 'application/json; charset=utf-8'})
说明 OSS使用以x-oss-meta-为前缀的参数作为用户自定义元信息header,详情请参见
PutObject。
修改文件元信息
以下代码用于修改文件的元信息:
# -*- coding: utf-8 -*- import oss2 # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。 auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>') # Endpoint以杭州为例,其它Region请按实际情况填写。 bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>') bucket.update_object_meta('<yourObjectName>', {'x-oss-meta-author': 'O. Henry'}) # 每次调用bucket.update_object_meta都会清空用户自定义元信息,重新写入。 bucket.update_object_meta('<yourObjectName>', {'x-oss-meta-price': '100 dollar'})
以下代码用于更改Content-Type等元信息:
bucket.update_object_meta('<yourObjectName>', {'x-oss-meta-author': 'O. Henry'}) # 每次调用bucket.update_object_meta都会清空用户自定义元信息,重新写入。 bucket.update_object_meta('<yourObjectName>', {'Content-Type': 'text/plain'})
获取文件元信息
您可以通过SDK提供的API获取文件元信息。
方法 | 描述 | 优势 |
---|---|---|
get_object_meta | 获取文件的ETag、Size(文件大小)、 LastModified(最后修改时间)。 | 更轻量、更快 |
head_object | 获取文件的全部元信息。 | 无 |
以下代码用于获取文件元信息:
# -*- coding: utf-8 -*- import oss2 # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。 auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>') # Endpoint以杭州为例,其它Region请按实际情况填写。 bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>') # 获取文件的部分元信息 simplifiedmeta = bucket.get_object_meta("<yourObjectName>") print(simplifiedmeta.headers['Last-Modified']) print(simplifiedmeta.headers['Content-Length']) print(simplifiedmeta.headers['ETag']) # 获取文件的全部元信息 objectmeta = bucket.head_object("<yourObjectName>") print(objectmeta.headers['Content-Type']) print(objectmeta.headers['Last-Modified']) print(objectmeta.headers['x-oss-object-type'])