Ruby管理文件元数据

对象存储OSS存储的文件(Object)信息包含Key、DataObject Meta。Object Meta是对文件的属性描述,包括HTTP标准属性(HTTP Header)和用户自定义元数据(User Meta)两种。您可以通过设置HTTP标准属性来自定义HTTP请求的策略,例如文件(Object)缓存策略、强制下载策略等。您还可以通过设置用户自定义元数据来标识Object的用途或属性等。

注意事项

  • Ruby SDK中,文件元数据用Hash来表示,其他keyvalue均为String类型。

  • 文件元数据会附在HTTP Headers中,而HTTP协议规定请求头部不能包含复杂字符,元数据只能是简单的ASCII可见字符且不能包含换行。

  • 所有元数据的总大小不能超过8 KB。

设置文件元数据

以下代码用于上传文件时设置文件元数据。

require 'aliyun/oss'
client = Aliyun::OSS::Client.new(
  # 填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
  # 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)

# 填写Bucket名称,例如examplebucket。
bucket = client.get_bucket('examplebucket')

# 简单上传时设置文件元数据。
bucket.put_object(
  'my-object-1',
  :file => 'local-file',
  :metas => {'year' => '2016', 'people' => 'mary'})

# 追加上传时设置文件元数据。
bucket.append_object(
  'my-object-2', 0,
  :file => 'local-file',
  :metas => {'year' => '2016', 'people' => 'mary'})

# 断点续传上传时设置文件元数据。
bucket.resumable_upload(
  'my-object',
  'local-file',
  :metas => {'year' => '2016', 'people' => 'mary'})          

修改文件元数据

以下代码用于修改文件元数据。

require 'aliyun/oss'
client = Aliyun::OSS::Client.new(
  # 填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
   # 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)

# 填写Bucket名称,例如examplebucket。
bucket = client.get_bucket('examplebucket')
# 修改文件元数据。
bucket.update_object_metas('my-object', {'year' => '2017'})            

相关文档

  • 关于在简单上传过程中设置文件元数据的API接口说明,请参见PutObject

  • 关于在拷贝文件过程中修改文件元数据的API接口说明,请参见CopyObject