tencent cloud

智能媒资托管

产品简介
产品概述
功能介绍
产品优势
应用场景
基本概念
购买指南
快速入门
创建媒体库
发起请求
服务级 API 文档
History
Introduction
API Category
Making API Requests
PaaS Service APIs
Official Cloud Disk APIs
Data Types
Error Codes
业务级 API 文档
简介
访问令牌操作接口
租户空间操作接口
文件操作接口
目录或相簿操作接口
回收站操作接口
配额操作接口
查询任务操作接口
搜索操作接口
历史版本操作接口
目录和文件批量操作接口
收藏操作接口
Error Codes
SDK 文档
Android SDK
iOS SDK
鸿蒙 SDK
常见问题
企业网盘
产品简介
购买指南
快速入门
常见问题
Service Level Agreement
词汇表

批量复制文件

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];


帮助和支持

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

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

文档反馈