前期准备
开始操作前,确保您已经完成了 SDK 初始化。如果您还没有初始化 SDK,请先参考快速入门文档完成。
注意事项:
批量接口可能返回200(全部同步完成)、202(已受理为异步任务,返回 taskId,需通过任务管理接口轮询)或207(部分成功)三种状态码。
简便方法(如
client.batch().batchCopy(...))会按 200 响应类型强转,当服务端实际返回 202/207 时会抛出 ClassCastException。批量接口请务必使用 xxxWithHttpInfo 方法,先判断 getStatusCode() 再强转响应体。批量元素单项处理结果通过响应
result 数组中每一项的 status 字段判断:批量复制/移动中,200表示重命名(rename)成功、204表示成功(ask 或 overwrite);批量删除中,200表示移入回收站成功、204表示永久删除成功;403/404/409/500等表示该项失败。批量复制
功能说明
batchCopy 用于批量复制目录或文件,支持跨空间复制。使用示例
import com.tencent.cloud.smh.ApiException;import com.tencent.cloud.smh.ApiResponse;import com.tencent.cloud.smh.api.BatchApi;import com.tencent.cloud.smh.model.BatchCopyRequestInner;import com.tencent.cloud.smh.model.BatchCopy200Response;import com.tencent.cloud.smh.model.BatchCopy202Response;import com.tencent.cloud.smh.model.BatchCopy207Response;import java.util.List;List<BatchCopyRequestInner> copyItems = List.of(new BatchCopyRequestInner().copyFrom("/documents/report.pdf").to("/backup/report.pdf").conflictResolutionStrategy(BatchCopyRequestInner.ConflictResolutionStrategyEnum.RENAME),new BatchCopyRequestInner().copyFromSpaceId("source-space-id") // 跨空间复制时指定源空间.copyFrom("/images/photo.jpg").to("/backup/photo.jpg"));try {BatchApi.APIBatchCopyRequest request = BatchApi.APIBatchCopyRequest.newBuilder().libraryId("your-library-id").spaceId("your-space-id").copy(1).accessToken("your-access-token").userId("user-id").batchCopyRequest(copyItems).build();ApiResponse<Object> apiResponse = client.batch().batchCopyWithHttpInfo(request);int statusCode = apiResponse.getStatusCode();if (statusCode == 200) {BatchCopy200Response result = (BatchCopy200Response) apiResponse.getData();for (var item : result.getResult()) {System.out.println("status: " + item.getStatus() + ", path: " + item.getPath());}} else if (statusCode == 202) {BatchCopy202Response result = (BatchCopy202Response) apiResponse.getData();System.out.println("Async task accepted, taskId: " + result.getTaskId());// 通过任务管理接口轮询任务执行结果} else if (statusCode == 207) {BatchCopy207Response result = (BatchCopy207Response) apiResponse.getData();System.out.println("Partial success, check each item status");}} catch (ApiException e) {System.err.println("Error: " + e.getCode() + " - " + e.getMessage());}
参数说明
参数名 | 参数描述 | 类型 | 是否必填 |
libraryId | 媒体库 ID | String | 是 |
spaceId | 空间 ID,如果媒体库为单租户模式,则该参数固定为连字符(-);如果媒体库为多租户模式,则必须指定该参数 | String | 是 |
copy | 固定值 1,表示批量复制操作 | Integer | 是 |
batchCopyRequest | 批量复制请求数组 | List<BatchCopyRequestInner> | 是 |
accessToken | 访问令牌;对于公有读媒体库或租户空间可不指定,否则需通过本参数传入或提前调用 client.withToken() 注入,二者取一 | String | 否 |
userId | 用户身份识别,当访问令牌对应的权限为管理员权限且申请访问令牌时的用户身份识别为空时用来临时指定用户身份 | String | 否 |
BatchCopyRequestInner 对象说明
字段 | 参数描述 | 类型 | 是否必填 |
copyFrom | 被复制的源文件或目录路径 | String | 是 |
to | 复制的目标路径 | String | 是 |
copyFromSpaceId | 跨空间复制时的源空间 ID,不跨空间时不传 | String | 否 |
conflictResolutionStrategy | 冲突处理方式:ask(冲突时该项失败)、rename(自动重命名)、overwrite(覆盖) | String | 否 |
返回值说明
HTTP 状态码 | 响应体类型 | 说明 |
200 | BatchCopy200Response | 全部同步完成,result 数组含每项的 status、path、copyFrom、to |
202 | BatchCopy202Response | 已受理为异步任务,返回 taskId,需轮询任务状态 |
207 | BatchCopy207Response | 部分成功,result 数组含每项的 status,需逐项检查 |
批量移动(重命名)
功能说明
batchMove 用于批量重命名或移动目录或文件,支持跨空间移动。使用示例
import com.tencent.cloud.smh.ApiException;import com.tencent.cloud.smh.ApiResponse;import com.tencent.cloud.smh.api.BatchApi;import com.tencent.cloud.smh.model.BatchMoveRequestInner;import com.tencent.cloud.smh.model.BatchMove200Response;import com.tencent.cloud.smh.model.BatchMove202Response;import com.tencent.cloud.smh.model.BatchMove207Response;import java.util.List;List<BatchMoveRequestInner> moveItems = List.of(new BatchMoveRequestInner().from("/documents/old-name.pdf").to("/documents/new-name.pdf"),new BatchMoveRequestInner().from("/documents/report.pdf").to("/archive/report.pdf").conflictResolutionStrategy(BatchMoveRequestInner.ConflictResolutionStrategyEnum.RENAME));try {BatchApi.APIBatchMoveRequest request = BatchApi.APIBatchMoveRequest.newBuilder().libraryId("your-library-id").spaceId("your-space-id").move(1).accessToken("your-access-token").userId("user-id").batchMoveRequest(moveItems).build();ApiResponse<Object> apiResponse = client.batch().batchMoveWithHttpInfo(request);int statusCode = apiResponse.getStatusCode();if (statusCode == 200) {BatchMove200Response result = (BatchMove200Response) apiResponse.getData();for (var item : result.getResult()) {System.out.println("status: " + item.getStatus() + ", path: " + item.getPath());}} else if (statusCode == 202) {BatchMove202Response result = (BatchMove202Response) apiResponse.getData();System.out.println("Async task accepted, taskId: " + result.getTaskId());} else if (statusCode == 207) {BatchMove207Response result = (BatchMove207Response) apiResponse.getData();System.out.println("Partial success, check each item status");}} catch (ApiException e) {System.err.println("Error: " + e.getCode() + " - " + e.getMessage());}
参数说明
参数名 | 参数描述 | 类型 | 是否必填 |
libraryId | 媒体库 ID | String | 是 |
spaceId | 空间 ID,如果媒体库为单租户模式,则该参数固定为连字符(-);如果媒体库为多租户模式,则必须指定该参数 | String | 是 |
move | 固定值1,表示批量移动操作 | Integer | 是 |
batchMoveRequest | 批量移动请求数组 | List<BatchMoveRequestInner> | 是 |
accessToken | 访问令牌;对于公有读媒体库或租户空间可不指定,否则需通过本参数传入或提前调用 client.withToken() 注入,二者取一 | String | 否 |
userId | 用户身份识别 | String | 否 |
BatchMoveRequestInner 对象说明
字段 | 参数描述 | 类型 | 是否必填 |
from | 被重命名或移动的源文件或目录路径 | String | 是 |
to | 移动的目标路径 | String | 是 |
fromSpaceId | 跨空间移动时的源空间 ID,不跨空间时不传 | String | 否 |
conflictResolutionStrategy | 冲突处理方式:ask、rename、overwrite | String | 否 |
返回值说明
HTTP 状态码 | 响应体类型 | 说明 |
200 | BatchMove200Response | 全部同步完成,result 数组含每项的 status、path、from、to |
202 | BatchMove202Response | 已受理为异步任务,返回 taskId,需轮询任务状态 |
207 | BatchMove207Response | 部分成功,result 数组含每项的 status,需逐项检查 |
批量删除
功能说明
batchDelete 用于批量删除目录或文件。媒体库开启回收站时,可选择移入回收站或永久删除。使用示例
import com.tencent.cloud.smh.ApiException;import com.tencent.cloud.smh.ApiResponse;import com.tencent.cloud.smh.api.BatchApi;import com.tencent.cloud.smh.model.BatchDeleteRequestInner;import com.tencent.cloud.smh.model.BatchDelete200Response;import com.tencent.cloud.smh.model.BatchDelete202Response;import com.tencent.cloud.smh.model.BatchDelete207Response;import java.util.List;List<BatchDeleteRequestInner> deleteItems = List.of(new BatchDeleteRequestInner().path("/documents/old-report.pdf"),new BatchDeleteRequestInner().path("/temp/cache").permanent(true) // 永久删除);try {BatchApi.APIBatchDeleteRequest request = BatchApi.APIBatchDeleteRequest.newBuilder().libraryId("your-library-id").spaceId("your-space-id").delete(1).accessToken("your-access-token").userId("user-id").batchDeleteRequest(deleteItems).build();ApiResponse<Object> apiResponse = client.batch().batchDeleteWithHttpInfo(request);int statusCode = apiResponse.getStatusCode();if (statusCode == 200) {BatchDelete200Response result = (BatchDelete200Response) apiResponse.getData();for (var item : result.getResult()) {System.out.println("status: " + item.getStatus()+ ", path: " + item.getPath()+ ", recycledItemId: " + item.getRecycledItemId());}} else if (statusCode == 202) {BatchDelete202Response result = (BatchDelete202Response) apiResponse.getData();System.out.println("Async task accepted, taskId: " + result.getTaskId());} else if (statusCode == 207) {BatchDelete207Response result = (BatchDelete207Response) apiResponse.getData();System.out.println("Partial success, check each item status");}} catch (ApiException e) {System.err.println("Error: " + e.getCode() + " - " + e.getMessage());}
参数说明
参数名 | 参数描述 | 类型 | 是否必填 |
libraryId | 媒体库 ID | String | 是 |
spaceId | 空间 ID,如果媒体库为单租户模式,则该参数固定为连字符(-);如果媒体库为多租户模式,则必须指定该参数 | String | 是 |
delete | 固定值1,表示批量删除操作 | Integer | 是 |
batchDeleteRequest | 批量删除请求数组 | List<BatchDeleteRequestInner> | 是 |
accessToken | 访问令牌;对于公有读媒体库或租户空间可不指定,否则需通过本参数传入或提前调用 client.withToken() 注入,二者取一 | String | 否 |
userId | 用户身份识别 | String | 否 |
BatchDeleteRequestInner 对象说明
字段 | 参数描述 | 类型 | 是否必填 |
path | 待删除的文件或目录路径 | String | 是 |
permanent | 是否永久删除,true 为永久删除,false 或不传为移入回收站(需媒体库开启回收站) | Boolean | 否 |
返回值说明
HTTP 状态码 | 响应体类型 | 说明 |
200 | BatchDelete200Response | 全部同步完成,result 数组含每项的 status、path、recycledItemId(移入回收站时返回) |
202 | BatchDelete202Response | 已受理为异步任务,返回 taskId,需轮询任务状态 |
207 | BatchDelete207Response | 部分成功,result 数组含每项的 status,需逐项检查 |