文件元信息(Object Meta)包括HTTP header和自定义元信息。
说明
关于文件元信息的更多信息,请参见开发指南中的文件元信息。
注意事项
设置HTTP header
以下代码用于为examplebucket存储空间中exampledir目录下exampleobject.txt文件设置HTTP header。
说明
关于HTTP header的更多信息,请参见RFC 2616。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
# 填写Bucket名称。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')
# 填写Object完整路径,例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。
object_name = 'exampledir/exampleobject.txt'
# 填写待上传的字符串。
content = '{"age": 1}'
# 设置HTTP header,例如HTTP header的名称为Content-Type,值为'application/json; charset=utf-8'。
bucket.put_object(object_name, content, headers={'Content-Type': 'application/json; charset=utf-8'})
设置自定义元信息
您可以自定义文件的元信息来对文件进行描述。
说明
OSS使用以x-oss-meta-为前缀的参数作为用户自定义元信息header。
以下代码用于为examplebucket存储空间中exampledir目录下exampleobject.txt文件设置自定义元信息。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
# 填写Bucket名称。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')
# 填写Object完整路径,例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。
object_name = 'exampledir/exampleobject.txt'
# 填写待上传字符串。
content = 'a novel'
# 设置自定义元信息,自定义元信息必须以x-oss-meta-为前缀,例如自定义元信息的名称为x-oss-meta-author,值为'O. Henry'。
bucket.put_object(object_name, content, headers={'x-oss-meta-author': 'O. Henry', 'Content-Type': 'application/json; charset=utf-8'})
修改文件元信息
以下代码用于修改examplebucket存储空间中exampledir目录下exampleobject.txt文件的元信息。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
# 填写Bucket名称。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')
# 填写Object完整路径,例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。
object_name = 'exampledir/exampleobject.txt'
bucket.update_object_meta(object_name, {'x-oss-meta-author': 'O. Henry'})
# 每次调用bucket.update_object_meta都会清空用户自定义元信息,重新写入。
bucket.update_object_meta(object_name, {'x-oss-meta-price': '100 dollar'})
以下代码用于更改Content-Type等元信息。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
# 填写Bucket名称。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')
# 填写Object完整路径,例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。
object_name = 'exampledir/exampleobject.txt'
bucket.update_object_meta(object_name, {'x-oss-meta-author': 'O. Henry'})
# 每次调用bucket.update_object_meta都会清空用户自定义元信息,重新写入。
bucket.update_object_meta(object_name, {'Content-Type': 'text/plain'})
获取文件元信息
您可以通过SDK提供的方法获取文件元信息。
方法 |
描述 |
优势 |
get_object_meta |
获取文件的ETag、Size(文件大小)、LastModified(最后修改时间)。 |
更轻量、更快 |
head_object |
获取文件的全部元信息。 |
无 |
以下代码用于获取examplebucket存储空间中exampledir目录下exampleobject.txt文件的元信息。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
# 填写Bucket名称。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')
# 填写Object完整路径,例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。
object_name = 'exampledir/exampleobject.txt'
# 通过get_object_meta方法获取文件的部分元信息。
simplifiedmeta = bucket.get_object_meta(object_name)
print(simplifiedmeta.headers['Last-Modified'])
print(simplifiedmeta.headers['Content-Length'])
print(simplifiedmeta.headers['ETag'])
# 开启访问追踪功能后,用于获取包含最后一次访问时间(x-oss-last-access-time)在内的文件元信息。仅Python SDK 2.16.1及以上版本支持获取x-oss-last-access-time。
print(simplifiedmeta.headers['x-oss-last-access-time'])
# 通过head_object方法获取文件的全部元信息。
objectmeta = bucket.head_object(object_name)
# 此处以打印文件的部分元信息为例介绍。如果需要打印文件的其他元信息,请自行添加。
print(objectmeta.headers['Content-Type'])
print(objectmeta.headers['Last-Modified'])
print(objectmeta.headers['x-oss-object-type'])
相关文档
-
关于设置和获取文件元信息的完整示例代码,请参见GitHub示例。
-
关于设置文件元信息的API接口说明,请参见PutObject。
-
关于获取文件元信息的API接口说明,请参见GetObjectMeta。
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:https://www.yunxiaoer.com/158191.html