目录操作

PDS目录操作最佳实践。

前言

本文档描述了在PDS中操作目录的最佳实践,您可以参考此文档实现目录操作。

目录是PDS中的一种特殊文件,因此文件相关的接口适用目录操作,但目录本身没有文件数据,因此又不同于普通文件。

目录的操作主要有:创建、拷贝、重命名、移动、删除等。

以下通过dir1和dir2的一系列的操作来演示如何执行目录操作,大体步骤如下图所示:

image

最佳实践

1 创建目录

image

调用/v2/file/create 接口

参考:CreateFile - 创建文件或文件夹

调试:https://next.api.aliyun.com/api/pds/2022-03-01/CreateFile

1.1 请求示例

创建目录时,需要指定目录创建的位置,这里指定的是空间2的根目录(root),目录的文件类型是folder。

这里在根目录下创建一个名字为dir1的目录。

{
  "drive_id": "2",
  "parent_file_id": "root",
  "type": "folder",
  "name": "dir1"
}

1.2 响应示例

返回http.code=201表示创建成功,file_id即dir1的文件id。

{
    "parent_file_id": "root",
    "type": "folder",
    "file_id": "63d8c8b647021605b8654c79b87440xxdir1xxxxx",
    "domain_id": "bj1xxxxx",
    "drive_id": "2",
    "file_name": "dir1",
    "encrypt_mode": "none"
}

2 拷贝目录

image

调用/v2/file/copy接口

参考:CopyFile - 复制文件或文件夹

调试:https://next.api.aliyun.com/api/pds/2022-03-01/CopyFile

2.1 请求示例

拷贝目录时,需要指定拷贝目录的文件id,另外需要指定拷贝目录到的位置(to_parent_file_id)。

这里在root目录下拷贝dir1,得到一个新的dir1(PDS支持文件同名),但是file_id是不同的。

{
    "drive_id": "2",
    "file_id": "63d8c8b647021605b8654c79b87440xxdir1xxxxx",
    "to_parent_file_id": "root"
}

2.2 响应示例

返回http.code=202表示拷贝任务已接受,正在后台执行。目录拷贝时,会将目录中的所有子孙文件都按照原来的目录结构拷贝到目的目录中,此操作是一个异步过程,需要一段时间才能执行完成,如果需要查询任务状态,可以调用/v2/async_task/get接口,只需要传入这里返回的async_task_id参数值。

{
    "domain_id": "bj1xxxxx",
    "drive_id": "2",
    "file_id": "63d8c9f32bbe142513744665ba087bxxdir2xxxxx",
    "async_task_id": "6b9f328c-5b39-41a0-8811-00e8879xxxxx"
}

2.3 异步任务查询

参考:GetAsyncTask - 获取异步任务信息

调试:https://next.api.aliyun.com/api/pds/2022-03-01/GetAsyncTask

3 重命名目录

image

调用/v2/file/update接口

参考:UpdateFile - 修改文件信息

调试:https://next.api.aliyun.com/api/pds/2022-03-01/UpdateFile

3.1 请求示例

重命名目录时,需要指定name参数为新目录名。

这里将新的dir1重命名为dir2。

{
    "drive_id": "2",
    "file_id": "63d8c9f32bbe142513744665ba087bxxdir2xxxxx",
    "name": "dir2"
}

3.2 响应示例

返回http.code=200表示重命名成功。

{
    "drive_id": "2",
    "domain_id": "bj1xxxxx",
    "file_id": "63d8c9f32bbe142513744665ba087bxxdir2xxxxx",
    "name": "dir2",
    // 这里为了简洁,忽略一些不重要的参数
}

4 移动目录

image

调用/v2/file/move接口

参考:MoveFile - 移动文件或文件夹

调试:https://next.api.aliyun.com/api/pds/2022-03-01/MoveFile

4.1 请求示例

移动目录时,需要填写移动到的目录(to_parent_file_id)。

这里将dir2移动到dir1下。

{
    "drive_id": "2",
    "file_id": "63d8c9f32bbe142513744665ba087bxxdir2xxxxx",
    "to_parent_file_id": "63d8c8b647021605b8654c79b87440xxdir1xxxxx"
}

4.2 响应示例

返回http.code=200表示移动成功。

{
    "domain_id": "bj1xxxxx",
    "drive_id": "2",
    "file_id": "63d8c9f32bbe142513744665ba087bxxdir2xxxxx"
}

5 删除目录

image

调用/v2/file/delete接口

参考:DeleteFile - 删除文件或文件夹

调试:https://next.api.aliyun.com/api/pds/2022-03-01/DeleteFile

5.1 请求示例

删除目录只需要两个基本参数,这里删除dir2。

{
    "drive_id": "2",
    "file_id": "63d8c9f32bbe142513744665ba087bxxdir2xxxxx",
}

5.2 响应示例

返回http.code=202表示删除任务已接受,正在后台执行。

删除目录同拷贝目录,也是一个异步过程。

{
    "domain_id": "bj1xxxxx",
    "drive_id": "2",
    "file_id": "63d8c9f32bbe142513744665ba087bxxdir2xxxxx",
    "async_task_id": "63d8c9f32bbe142513744665ba087b40bxxxxx"
}