简介
本文档提供关于文件上传的 API 概览以及 SDK 示例代码。
SDK API 参考
功能说明
该上传方法内部会自动进行快速上传、简单上传、分块上传的逻辑。
开始/继续上传
QCloudCOSSMHUploadObjectRequest *uploadReq = [QCloudCOSSMHUploadObjectRequest new];// confirmKey 若设置则视为继续上传,否则为新上传任务// 从 getConfirmKey 回调获取uploadReq.confirmKey = @"confirmKey";// 设置要上传的目录所在 libraryIduploadReq.libraryId = @"libraryId";// 设置要上传的目录所在 spaceIduploadReq.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 并开始上传。