功能描述
用于批量复制目录或文件。
接口说明
要求权限:
非 acl 鉴权:admin、space_admin 或 copy_directory/copy_file/copy_file_force,如需同时复制目录和文件,可同时指定 copy_directory 与 copy_file/copy_file_force 权限;
请求
请求示例
POST /api/v1/batch/
{LibraryId}
/{SpaceId}
?copy&share_access_token={ShareAccessToken}
&access_token={AccessToken}
&user_id={UserId}
请求参数:
LibraryId:媒体库 ID,必选参数。
SpaceId:空间 ID,必须指定该参数,如果媒体库为单租户模式,则该参数固定为连字符(
-
)。ShareAccessToken:分享链接验证提取码时返回的 accessToken。
AccessToken:访问令牌,必选参数。
UserId:用户身份识别,当访问令牌对应的权限为管理员权限且申请访问令牌时的用户身份识别为空时用来临时指定用户身份,详情请参阅 生成访问令牌接口,可选参数。
请求体
application/json,指定复制的源路径和目的路径。
请求体示例:
[{"copyFromLibraryId":"smhdnqjMDIWUqwdn","copyFromSpaceId":"spaceNJsnjdiq","copyFrom": "bar","to": "foo/bar"},{"copyFrom": "foo/1.jpg","to": "bar/1.jpg"},{"copyFrom": "foo/2.jpg","to": "bar/2.jpg","conflictResolutionStrategy": "overwrite"}]
请求体字段说明:
copyFrom:必选参数,被复制的源目录、相簿或文件路径,必选参数。
to:必选参数,目标目录、相簿或文件路径,必选参数。
conflictResolutionStrategy:文件名冲突时的处理方式。
ask:冲突时返回 status:409 及 SameNameDirectoryOrFileExists 错误码。
rename:冲突时自动重命名文件。
overwrite:如果冲突目标为目录时返回 status:409 及 SameNameDirectoryOrFileExists 错误码,否则覆盖已有文件,如果目标为目录或相簿时,默认为 ask 且不支持 overwrite,如果目标为文件默认为 rename,可选参数。
copyFromLibraryId 可选参数,跨 library 复制文件时,被复制的源文件所在的 library ID。
copyFromSpaceId 可选参数,跨 library 复制文件时,被复制的源文件所在的空间 ID。
响应
响应码
执行成功
- 当项目较多以异步方式复制时,返回 HTTP 202 Accepted。 - 当项目较少以同步方式复制时,返回 HTTP 200 OK(全部执行成功)或 HTTP 207 Multi-Status(存在部分或全部执行失败)。
响应体
application/json
响应体示例:
返回 HTTP 200 OK 或 HTTP 207 Multi-Status 时:
{"result": [{"status": 204,"copyFrom": "bar","to": [ "foo", "bar" ]},{"status": 200,"path": [ "bar", "1 (1).jpg" ],"copyFrom": [ "foo", "1.jpg" ],"to": [ "bar", "1.jpg" ]},{"status": 204,"copyFrom": [ "foo", "2.jpg" ],"to": [ "bar", "2.jpg" ]}]}
返回 HTTP 202 Accepted 时:
{ "taskId": 16 }
查询批量复制任务响应体:
[{"id": 16,"status": 200,"result": [{"status": 204,"copyFrom": "bar","to": [ "foo", "bar" ]},{"status": 200,"path": [ "bar", "1 (1).jpg" ],"copyFrom": [ "foo", "1.jpg" ],"to": [ "bar", "1.jpg" ]},{"status": 204,"copyFrom": [ "foo", "2.jpg" ],"to": [ "bar", "2.jpg" ]}]}]
响应体字段说明:
result.status:单个项目的复制结果。
200:conflictResolutionStrategy 为 rename 时复制成功。
204:conflictResolutionStrategy 为 ask 或 overwrite 时复制成功。
403/404/409/500 等:复制失败。
result.path:字符串数组,表示最终的路径,因为可能存在自动重命名,所以这里的最终路径可能不等同于复制时指定的路径。
result.copyFrom 和 result.to:发起请求时传入的对应路径的数组形式。
taskId:异步方式复制时的任务 ID,可通过查询任务接口查询任务状态。
查询任务响应体字段说明:
status:
202:任务进行中。
200:全部执行成功。
207:存在部分或全部执行失败。