上传

最近更新时间:2026-03-16 11:47:32

我的收藏

简介

本文档提供关于文件上传的 API 概览以及 SDK 示例代码。

SDK API 参考

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

功能说明

该上传方法内部会自动进行快速上传、简单上传、分块上传的逻辑。

开始/继续上传

QCloudCOSSMHUploadObjectRequest *uploadReq = [QCloudCOSSMHUploadObjectRequest new];
// confirmKey 若设置则视为继续上传,否则为新上传任务
// 从 getConfirmKey 回调获取
uploadReq.confirmKey = @"confirmKey";
// 设置要上传的目录所在 libraryId
uploadReq.libraryId = @"libraryId";
// 设置要上传的目录所在 spaceId
uploadReq.spaceId = @"spaceId";
// 上传源,可以是本地文件路径、第三方文件 URL 或 NSData 对象
uploadReq.body = [NSURL URLWithString:@"https://xxxxxxx.com/file"];;
uploadReq.uploadPath = @"目标路径";
// confirmKey 回调。
uploadReq.getConfirmKey = ^(NSString *_Nullable confirmKey) {
// confirmKey 在进行断点续传时需要,业务需要保存
};
// 上传进度回调
[uploadReq setSendProcessBlock:^(int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend) {

}];
// 上传结果回调
[uploadReq setFinishBlock:^(QCloudSMHContentInfo *result, NSError *error) {

}];
// 发起上传
[[QCloudSMHService defaultSMHService] uploadObject:uploadReq];
说明:
文件上传接口同时支持本地文件 URL 和第三方 URL。当 body 传入http://https://开头的远程 URL 时,SDK 会自动从该 URL 流式拉取数据并上传。
第三方 URL 支持分片上传和简单上传。当 URL 支持 range 时会执行分片上传,其余情况执行简单上传(不支持断点续传功能)。
第三方 URL 在简单上传的情况下仅支持小于等于5GB的文件进行上传,当您上传大于5GB的文件时会抛出错误码:QCloudNetworkErrorUnsupportOperationError(提示上传的文件超过限制),您可尝试将文件下载到本地之后在重新调用上传接口进行上传。

暂停上传

上传时创建的 request 执行 cancel 方法。
[uploadReq cancel];

取消上传

上传时创建的 request 执行 abort 方法,可以在结束回调中做一些清理工作。
[uploadReq abort:^(id outputObject, NSError *error) {
// 结束回调
}];
说明:
若要实现 App 被 kill 之后再次打开继续上传,则需要业务端将 confirmkey 以及本次上传任务对应的 body、libraryId、spaceId、uploadPath 进行持久化,再次进入 App 时重新创建 request 并开始上传。