有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

简介

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

SDK API 参考

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

批量删除

功能说明

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

批量删除实例代码

开始批量删除
QCloudSMHBatchDeleteRequest *req = [QCloudSMHBatchDeleteRequest new];
req.libraryId = @"libraryId";
req.spaceId = @"spaceId";
req.userId = @"userId";
req.spaceOrgId = @"spaceOrgId";
req.batchInfos = @[];
[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 进行轮询任务状态
self.taskId = result.taskId;
}
}];
[[QCloudSMHService defaultSMHService]batchDelete:req];

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

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

高级批量删除示例代码

该接口封装了批量删除以及轮询任务状态,setFinishBlock 直接返回最终任务结果,无需手动查询任务状态。
QCloudSMHDeleteObjectRequest *req = [QCloudSMHDeleteObjectRequest new];
req.spaceId = @"spaceId";
req.spaceOrgId = @"spaceOrgId";
req.libraryId = @"libraryId";
req.userId = @"userId";

QCloudSMHBatchDeleteInfo *info = [QCloudSMHBatchDeleteInfo new];
// 文件路径
info.path = @"totalPath";
req.batchInfos = @[info];
[req setFinishBlock:^(QCloudSMHBatchResult *result, NSError *_Nullable error) {

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