tencent cloud

智能媒资托管

批量复制文件

PDF
聚焦模式
字号
最后更新时间: 2026-01-07 10:49:06

简介

本文档提供关于批量复制文件的 API 概览以及 SDK 示例代码。
API
操作描述
批量复制文件

SDK API 参考

SDK 所有接口的具体参数与方法说明,请参见 SDK API 参考

批量复制文件

功能说明

用于批量复制目录或文件,不支持跨空间复制。
当项目较多以异步方式复制时,返回 HTTP 202 Accepted。
当项目较少以同步方式复制时,返回 HTTP 200 OK(全部执行成功)或 HTTP 207 Multi-Status(存在部分或全部执行失败)。

批量复制文件代码

开始批量复制

QCloudSMHBatchCopyRequest *req = [QCloudSMHBatchCopyRequest new];
req.spaceId = @"spaceId";
req.libraryId = @"libraryId";
// 实现保存网盘功能时需要该参数
req.shareAccessToken = @"shareAccessToken";
QCloudSMHBatchCopyInfo *info = [QCloudSMHBatchCopyInfo new];
// 原路径
info.from = @"from";
// 目标路径
info.to = @"target";
// fromLibraryId fromSpaceId 参数用来实现保存网盘功能。需要和 shareAccessToken 一起使用。
info.fromLibraryId = @"fromLibraryId";
info.fromSpaceId = @"fromSpaceId";
// 是否移动权限
info.moveAuthority = YES;
// 文件名与目标路径冲突时解决策略
info.conflictStrategy = QCloudSMHConflictStrategyEnumRename;
req.batchInfos = @[info];
[req setFinishBlock:^(QCloudSMHBatchResult *result, NSError * _Nullable error) {
//如果是同步任务,从 http 的状态码中获取任务的状态
QCloudSMHBatchTaskStatus status = QCloudSMHBatchTaskStatusTypeFromStatus([result __originHTTPURLResponse__].statusCode);
result.status = status;
if(status != QCloudSMHBatchTaskStatusWating || error){
// 当任务状态非等待或者有 error 时结束
if(self.finishBlock){
self.finishBlock(result, error);
}
}else{
// 使用返回的 taskid 进行轮询任务状态
result.taskId;
}
}];
[[QCloudSMHService defaultSMHService]batchCopy:req];


查询任务状态

这里需要进行轮询任务状态,直到查询到任务结果。
QCloudGetTaskStatusRequest *req = [QCloudGetTaskStatusRequest new];
req.spaceId = @"spaceId";
req.libraryId = @"libraryId";
// 上一步返回的 taskId
req.taskIdList = @[taskId];
[req setFinishBlock:^(NSArray * _Nonnull result, NSError * _Nonnull error) {

}];
[[QCloudSMHService defaultSMHService] getTaskStatus:req];

高级批量复制示例代码

该接口封装了批量复制以及轮询任务状态,setFinishBlock 直接返回最终任务结果,无需手动查询任务状态。
QCloudSMHCopyObjectRequest *req = [QCloudSMHCopyObjectRequest new];
req.libraryId = @"libraryId";
req.spaceId = @"spaceId";
// 保存网盘时需要 shareAccessToken
req.shareAccessToken = @"shareAccessToken";

QCloudSMHBatchCopyInfo *info = [QCloudSMHBatchCopyInfo new];
// 源路径
info.from = @"fromPath";
// 目标路径
info.to = @"toPath";
info.conflictStrategy = QCloudSMHConflictStrategyEnumRename;
// 实现保存网盘是需要 shareAccessToken fromSpaceId fromLibraryId
if (shareAccessToken) {
info.fromSpaceId = @"fromSpaceId";
info.fromLibraryId = @"fromLibraryId";
}
req.batchInfos = @[info];
[req setFinishBlock:^(QCloudSMHBatchResult *result, NSError *_Nullable error) {

}];
[[QCloudSMHService defaultSMHService] copyObject:req];


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈