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

使用限制

通过追加上传的方式上传文件时,有如下限制:

  • 如果文件不存在,则调用AppendObject接口会创建一个可追加类型的文件。
  • 如果文件已存在,且为可追加类型文件时,若设置的追加位置和文件当前长度不等,则抛出PositionNotEqualToLength异常。如果文件已存在,且为不可追加类型文件时,则抛出ObjectNotAppendable异常。
  • 追加类型的文件暂不支持CopyObject操作。

有关追加上传的更多信息,请参见AppendObject

示例代码

以下代码用于追加上传文件:

# -*- coding: utf-8 -*-
import oss2

# 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
# Endpoint以杭州为例,其它Region请按实际情况填写。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')

# 设置首次上传的追加位置(Position参数)为0。
# <yourObjectName>填写不包含Bucket名称在内的Object的完整路径,例如example/test.txt。
result = bucket.append_object('<yourObjectName>', 0, 'content of first append')
# 如果不是首次上传,可以通过bucket.head_object方法或上次追加返回值的next_position属性,获取追加位置。
bucket.append_object('<yourObjectName>', result.next_position, 'content of second append')
        

有关Bucket名称命名规范的更多信息,请参见存储空间(Bucket)。有关Object名称命名规范的更多信息,请参见对象(Object)