追加上传是指通过AppendObject方法在已上传的追加类型文件(Appendable Object)末尾直接追加内容。

通过Bucket#append_object来上传可追加的文件。调用该接口时需要指定文件追加的position,首次追加操作的position必须为0,后续追加操作的position是Object的当前大小。

  • 文件不存在时,调用append_object会创建一个可追加的文件。
  • 文件存在时,调用append_object会向文件末尾追加内容。

示例代码

以下代码用于追加上传。

require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  # Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
  # 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
  access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')

# 填写Bucket名称,例如examplebucket。
bucket = client.get_bucket('examplebucket')
# my-object填写Object完整路径,完整路径中不能包含Bucket名称。
bucket.append_object('my-object', 0)

# 向文件末尾追加内容。
next_pos = bucket.append_object('my-object', 0) do |stream|
  100.times { |i| stream << i.to_s }
end
next_pos = bucket.append_object('my-object', next_pos, :file => 'local-file-1')
next_pos = bucket.append_object('my-object', next_pos, :file => 'local-file-2')
说明
  • 只能向Appendable类型的Object追加内容。
  • 不支持对Appendable类型的Object进行拷贝。

相关文档

关于追加上传的API接口说明,请参见AppendObject