调用DeleteObject删除某个文件(Object)。

注意事项

  • 要删除文件,您必须有Object的写权限。
  • 无论要删除的Object是否存在,删除成功后均会返回204状态码。
  • 如果Object类型为软链接,使用DeleteObject接口只会删除该软链接。
  • Bucket开启分层命名空间后,使用DeleteObject接口不能删除该Bucket中的目录(Directory)。

版本控制

版本控制状态下的删除行为说明如下:

  • 未指定versionId(临时删除)

    在未指定versionId的情况下执行删除操作时,默认不会删除Object的当前版本,而是对当前版本插入删除标记(Delete Marker)。此外,响应中还会返回header:x-oss-delete-marker = true以及新生成的删除标记的版本号x-oss-version-id

    x-oss-delete-marker的值为true,表示与返回的x-oss-version-id对应的版本为删除标记。

    说明 如果Bucket已暂停版本控制,且在Object已存在null历史版本的情况下,执行未指定versionId的删除操作,则会插入versionId为null的删除标记,并覆盖已存在的null历史版本。单个Object最多只有一个versionId为null的版本。
  • 指定versionId(永久删除):

    如果在指定versionId的情况下执行删除操作时,OSS会根据params中指定的versionId参数永久删除该版本。如果要删除ID为null的版本,请在params参数中添加params['versionId'] = “null”,OSS将null字符串当成null的versionId,从而删除versionId为null的Object。

请求语法

DELETE /ObjectName HTTP/1.1
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Date: Wed, 02 Jan 2019 13:28:38 GMT
Authorization: SignatureValue

请求头

此接口仅涉及公共请求头。更多信息,请参见公共请求头(Common Request Headers)

响应头

名称类型示例值描述
x-oss-delete-marker布尔型trueObject为删除标记。
  • 未指定versionId执行DeleteObject操作时,OSS会创建删除标记,响应中会返回此Header,且值为true。
  • 指定versionId来永久删除指定Object版本时,如果该版本是删除标记,响应中会返回此Header,且值为true。
有效值:true
x-oss-version-id字符串CAEQMxiBgIDh3ZCB0BYiIGE4YjIyMjExZDhhYjQxNzZiNGUyZTI4ZjljZDcz****Object的versionId。
  • 未指定versionId执行DeleteObject操作时,OSS会创建删除标记,响应中会返回此Header,表示新创建的删除标记的versionId。
  • 指定versionId来永久删除Object指定版本时,响应中会返回此Header,表示删除Object的versionId。

此接口还需要包含公共响应头。关于公共响应头的更多信息,请参见公共响应头(Common Response Headers)

示例

  • 执行DeleteObject操作
    请求示例
    DELETE /AK.txt HTTP/1.1
    Host: test.oss-cn-zhangjiakou.aliyuncs.com
    Accept-Encoding: identity
    User-Agent: aliyun-sdk-python/2.6.0(Windows/7/AMD64;3.7.0)
    Accept: text/html
    Connection: keep-alive
    date: Wed, 02 Jan 2019 13:28:38 GMT
    authorization: OSS qn6qrrqxo2oawuk53otfjbyc:zUglwRPGkbByZxm1+y4eyu+NIUs=zV0****
    Content-Length: 0
    返回示例
    HTTP/1.1 204 No Content
    Server: AliyunOSS
    Date: Wed, 02 Jan 2019 13:28:38 GMT
    Content-Length: 0
    Connection: keep-alive
    x-oss-request-id: 5C2CBC8653718B5511EF4535
    x-oss-server-time: 134
  • 未指定versionId执行DeleteObject操作

    此时OSS中会插入删除标记,响应中将返回x-oss-delete-marker=true

    请求示例
    DELETE /example HTTP/1.1
    Host: versioning-delete.oss-cn-hangzhou.aliyuncs.com
    Date: Tue, 09 Apr 2019 04:08:23 GMT
    Authorization: OSS twnetzwjkqr9eq6:z73SSKA6t2tNTP4GuPjPiyV/****
    返回示例
    HTTP/1.1 204 NoContent
    x-oss-delete-marker: true
    x-oss-version-id: CAEQMxiBgIDh3ZCB0BYiIGE4YjIyMjExZDhhYjQxNzZiNGUyZTI4ZjljZDcz****
    x-oss-request-id: 5CAC1AB7B7AEADE01700****
    Date: Tue, 09 Apr 2019 04:08:23 GMT
    Connection: keep-alive
    Server: AliyunOSS
  • 指定versionId执行DeleteObject操作

    通过指定versionId来执行DeleteObject操作时,将永久删除该指定versionId的Object。

    请求示例
    DELETE /example?versionId=CAEQOBiBgIDNlJeB0BYiIDAwYjJlNDQ4YjJkMzQxMmY5NTM5N2UzZWNiZTQ2**** HTTP/1.1
    Host: versioning-delete.oss-cn-hangzhou.aliyuncs.com
    Date: Tue, 09 Apr 2019 04:11:54 GMT
    Authorization: OSS gb3m2qiwirupd6v:UjOXBmIbJD3qXL+DP1EDNyCI****
    返回示例
    HTTP/1.1 204 No Content
    x-oss-version-id: CAEQOBiBgIDNlJeB0BYiIDAwYjJlNDQ4YjJkMzQxMmY5NTM5N2UzZWNiZTQ2****
    x-oss-request-id: 5CAC1B8AB7AEADE01700****
    Date: Tue, 09 Apr 2019 04:11:54 GMT
    Content-Length: 0
    Connection: keep-alive
    Server: AliyunOSS
  • 指定versionId删除“删除标记”

    指定删除的版本为删除标记时,响应中将返回x-oss-delete-marker=true

    请求示例
    DELETE /example?versionId=CAEQOBiBgIDNlJeB0BYiIDAwYjJlNDQ4YjJkMzQxMmY5NTM5N2UzZWNiZTQ2**** HTTP/1.1
    Host: versioning-delete.oss-cn-hangzhou.aliyuncs.com
    Date: Tue, 09 Apr 2019 04:16:25 GMT
    Authorization: OSS jh475i54ffozhoy:4tX6Z+fnhtINhp0g+sRiLEQb****
    返回示例
    HTTP/1.1 204 No Content
    x-oss-delete-marker: true
    x-oss-version-id: CAEQNhiBgIDFtp.B0BYiIDk4NzgwMmU4NDMyOTQyM2NiMDQxOTcxYWNhMjc1****
    x-oss-request-id: 5CAC1C99B7AEADE01700****
    Date: Tue, 09 Apr 2019 04:16:25 GMT
    Content-Length: 0
    Connection: keep-alive
    Server: AliyunOSS

SDK

DeleteObject接口所对应的各语言SDK如下:

错误码

错误码HTTP状态码描述
FileImmutable409Bucket中的数据处于被保护状态时,如果尝试删除或修改这些数据,则返回该错误。
FileAlreadyExists409Bucket开启分层命名空间后,当您要在该Bucket中删除某个Object时,如果设置的Object为目录,则返回该错误。