全部产品
Search
文档中心

对象存储 OSS:DeleteDirectory

更新时间:Apr 29, 2024

DeleteDirectory接口用于删除目录(Directory)。只有开启分层命名空间的Bucket支持调用此接口。

注意事项

  • 目录支持如下删除方式,请根据实际选择。

    • 递归删除(Recursively Delete):清空目录中的所有文件和目录。

    • 非递归删除:只能删除空目录。

  • 使用的删除方式不同时需要的权限不同。

    • 使用递归删除方式删除目录时,您必须有目录以及该目录下所有文件和目录的DeleteObject权限。

      例如要递归删除desktop目录下osstest目录,您必须有desktop/osstest和desktop/osstest/*的DeleteObject权限。

    • 使用非递归删除方式删除目录时,您必须有目录的DeleteObject权限。

      例如要非递归删除desktop目录下的dir目录,您必须有desktop/dir的DeleteObject权限。

  • 使用递归删除方式删除目录时,如果同时存在向目录的并发写请求,则可能导致目录删除失败。

请求语法

POST /objectName?x-oss-delete HTTP/1.1
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue

请求头

名称

类型

是否必选

描述

x-oss-delete-recursive

字符串

是否递归删除目录。

  • 不指定x-oss-delete-recursive或者指定x-oss-delete-recursivefalse时,表示非递归删除,即只能删除空目录。

  • 指定x-oss-delete-recursivetrue时,表示递归删除,即清空目录中的所有文件和目录。

默认值:false

x-oss-delete-token

字符串

下一个删除目标的标记。此选项仅当x-oss-delete-recursivetrue时有效。

第一次调用DeleteDirectory接口时为空。

此接口还需要包含Host、Date等公共请求头。关于公共请求头的更多信息,请参见公共请求头(Common Request Headers)

响应头

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

响应元素

名称

类型

描述

DeleteDirectoryResult

容器

保存被成功删除的Object的容器。

父节点:None

DirectoryName

字符串

删除的目录名称。

父节点:DeleteDirectoryResult

DeleteNumber

字符串

删除的文件和目录数量。

父节点:DeleteDirectoryResult

NextDeleteToken

字符串

下一次删除起始位置的标记。

父节点:DeleteDirectoryResult

示例

  • 非递归删除目录

    请求示例

    POST /desktop/osstest/a?x-oss-delete HTTP/1.1
    Host: oss-example.oss-cn-hangzhou.aliyuncs.com
    Date: Thu, 29 Apr 2021 05:21:12 GMT
    Authorization: OSS qn6q**************:77Dv****************

    返回示例

    HTTP/1.1 200 OK
    x-oss-request-id: 559CC9BDC755F95A64485981
    Date: Thu, 29 Apr 2021 05:21:12 GMT
    Connection: keep-alive
    Server: AliyunOSS
    <DeleteDirectoryResult>
        <DirectoryName>desktop/osstest/a</DirectoryName>
        <DeleteNumber>1</DeleteNumber>
    </DeleteDirectoryResult>
  • 递归删除目录

    请求示例

    POST /desktop/osstest/a?x-oss-delete HTTP/1.1
    Host: oss-example.oss-cn-hangzhou.aliyuncs.com
    Date: Thu, 29 Apr 2021 05:21:12 GMT
    Authorization: OSS qn6q**************:77Dv****************
    x-oss-delete-recursive: true

    返回示例

    HTTP/1.1 200 OK
    x-oss-request-id: 559CC9BDC755F95A64485981
    Date: Thu, 29 Apr 2021 05:21:12 GMT
    Connection: keep-alive
    Server: AliyunOSS
    <DeleteDirectoryResult>
        <DirectoryName>desktop/osstest/a</DirectoryName>
        <DeleteNumber>100</DeleteNumber>
        <NextDeleteToken>Cg9kZXNrdG9wL29zcy9hLzk-</NextDeleteToken>
    </DeleteDirectoryResult>

SDK

Java SDK:删除目录

错误码

错误码

HTTP状态码

描述

AccessDenied

403

返回该错误的可能原因如下:

  • 删除目录时,用户对设置的Bucket没有访问权限。

  • 删除目录时,用户对目录没有删除权限。

NoSuchKey

404

删除目录时,设置的目录不存在。

FileAlreadyExists

409

返回该错误的可能原因如下:

  • 使用非递归删除方式删除目录时,目录不为空。

  • 使用递归删除方式删除目录时,同时存在向目录的并发写请求。

InvalidArgument

400

使用递归删除方式删除目录时,传入的x-oss-delete-token格式错误。