全部产品
Search
文档中心

对象存储 OSS:DeleteObject

更新时间:Jun 14, 2024

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

注意事项

  • 要删除文件,您必须有oss:DeleteObject权限。要删除文件指定版本,您必须具有oss:DeleteObjectVersion权限。具体操作,请参见为RAM用户授权自定义的权限策略

  • 文件删除后无法恢复,请谨慎操作。关于删除文件的更多信息,请参见删除文件

  • 无论要删除的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: GMT Date
Authorization: SignatureValue

请求头

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

响应头

名称

类型

示例值

描述

x-oss-delete-marker

布尔型

true

Object为删除标记。

  • 未指定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 qn6q**************:77Dv****************

    返回示例

    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 qn6q**************:77Dv****************

    返回示例

    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 qn6q**************:77Dv****************

    返回示例

    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状态码

描述

FileImmutable

409

Bucket中的数据处于被保护状态时,如果尝试删除或修改这些数据,则返回该错误。

FileAlreadyExists

409

Bucket开启分层命名空间后,当您要在该Bucket中删除某个Object时,如果设置的Object为目录,则返回该错误。