UPYUN iOS SDK 集成了表单上传UpYunFormUploader
和断点续传 UpYunBlockUpLoader
两部分,分别实现了以下文档接口:
表单上传
适用于上传图片、短视频等小文件。(另外通过 otherParameters 可实现方便的图片视频预处理
功能)
断点续传
适用于大文件上传和断点续传。(特别地,断点续传上传的图片不支持预处理)
iOS 8.0 及以上版本, ARC 模式, 基于系统网络库 NSURLSession 发送 HTTP 请求。
步骤1:
下载 SDK,然后将 UpYunSDK
文件夹拖到工程中。(最新版本 2.0.0 暂时无法用 CocoaPods 安装。)
注: 如果使用Xcode 9 版本, 拖到工程后, 仍需要在项目的 app target 中,查看 Build Phases 中的 Compile Source 和 Copy Bundle Resources ,手动添加需要编译的代码文件和资源文件。
步骤2:
参考 demo
工程 ViewController2.m
上传方法进行文件上传。需要引入相应的头文件, UpYunFormUploader.h
或者 UpYunBlockUpLoader.h
。
步骤3:
本地签名上传所需要的基本参数如:
服务名、操作员、操作员密码, 可以在 upyun 控制台获取:导航栏>云产品>云存储>创建服务。
表单上传接口共有两个,分别适用于 本地签名 和 服务器签名 两种上传方式。
使用时请引入头文件 #import "UpYunFormUploader.h"
。 具体使用方式请参考 demo 页面文件 "ViewController2.m".
/*表单上传接口
参数 bucketName: 服务名
参数 operator: 操作员
参数 password: 操作员密码
参数 fileData: 上传文件数据
参数 fileName: 上传文件名
参数 saveKey: 上传文件的保存路径, 例如:“/2015/0901/file1.jpg”。可用占位符,参考:http://docs.upyun.com/api/form_api/#save-key
参数 otherParameters: 可选的其它参数可以为nil. 参考文档:表单-API-参数http://docs.upyun.com/api/form_api/#_2
参数 successBlock: 上传成功回调
参数 failureBlock: 上传失败回调
参数 progressBlock: 上传进度回调
*/
- (void)uploadWithBucketName:(NSString *)bucketName
operator:(NSString *)operatorName
password:(NSString *)operatorPassword
fileData:(NSData *)fileData
fileName:(NSString *)fileName
saveKey:(NSString *)saveKey
otherParameters:(NSDictionary *)otherParameters
success:(UpLoaderSuccessBlock)successBlock
failure:(UpLoaderFailureBlock)failureBlock
progress:(UpLoaderProgressBlock)progressBlock;
/*表单上传接口,上传策略和签名可以是从服务器获取
参数 operator: 空间操作员
参数 policy: 上传策略
参数 signature: 上传策略签名
参数 fileData: 上传的数据
参数 fileName: 上传文件名
参数 success: 上传成功回调
参数 failure: 上传失败回调
参数 progress: 上传进度回调
*/
- (void)uploadWithOperator:(NSString *)operatorName
policy:(NSString *)policy
signature:(NSString *)signature
fileData:(NSData *)fileData
fileName:(NSString *)fileName
success:(UpLoaderSuccessBlock)successBlock
failure:(UpLoaderFailureBlock)failureBlock
progress:(UpLoaderProgressBlock)progressBlock;
//取消上传
- (void)cancel;
注意:表单上传接口接口中 otherParameters 提供更丰富的上传参数定义,比如图片和音视频预处理参数 apps
,具体请参考文档表单-API-参数
断点续传接口只有一个,需要 本地签名 进行上传。
使用时请引入相应的头文件 #import "UpYunBlockUpLoader.h"
。 具体使用方式请参考 demo 页面文件 "ViewController2.m".
/*断点续传接口
参数 bucketName: 上传空间名
参数 operator: 空间操作员
参数 operatorPassword: 空间操作员密码
参数 filePath: 上传文件本地路径
参数 savePath: 上传文件的保存路径, 例如:“/2015/0901/file1.jpg”
参数 successBlock: 上传成功回调
参数 failureBlock: 上传失败回调
参数 progressBlock: 上传进度回调
*/
- (void)uploadWithBucketName:(NSString *)bucketName
operator:(NSString *)operatorName
password:(NSString *)operatorPassword
filePath:(NSString *)filePath
savePath:(NSString *)savePath
success:(UpLoaderSuccessBlock)successBlock
failure:(UpLoaderFailureBlock)failureBlock
progress:(UpLoaderProgressBlock)progressBlock;
/** 断点续传后处理接口
参数 bucketName: 服务名
参数 operator: 操作员
参数 operatorPassword: 操作员密码
服务名、操作员、操作员密码, 可以在 upyun 控制台获取:https://console.upyun.com/dashboard/ 导航栏>云产品>云存储>创建服务
* 参数 filePath: 上传文件本地路径
* 参数 savePath: 上传文件的保存路径, 例如:“/2015/0901/file1.jpg”
* 参数 notify_url: 回调通知地址, 详见 https://docs.upyun.com/cloud/av/#notify_url
* 参数 tasks: 任务信息, 详见 https://docs.upyun.com/cloud/av/#tasks
* 参数 successBlock: 上传成功回调
* 参数 failureBlock: 上传失败回调
* 参数 progressBlock: 上传进度回调
*/
- (void)uploadWithBucketName:(NSString *)bucketName
operator:(NSString *)operatorName
password:(NSString *)operatorPassword
filePath:(NSString *)filePath
savePath:(NSString *)savePath
notify_url:(NSString *)notify_url
tasks:(NSArray *)tasks
success:(UpLoaderSuccessBlock)successBlock
failure:(UpLoaderFailureBlock)failureBlock
progress:(UpLoaderProgressBlock)progressBlock;
//取消上传
- (void)cancel;
/*删除本地缓存
使用场景1: 失败的上传任务将记录在本地以实现续传,为避免将错误状态持久化在本地,而产生无法恢复的上传,可调用此方法恢复。
使用场景2: 可在开发过程中使用此方法进行调试。
使用场景3: 推荐将此方法放到 app 的“清除缓存”的功能功能中。
使用场景4: 当上传出现失败,可以提供多个选项供用户操作,比如:接着续传或者重新上传,如果需要重新上传就需要调用此方法。
*/
+ (void)clearCache;
下载运行 demo 工程即可以直接进行上传文件的测试。主要功能代码在 ViewController2.m
文件中。
- (void)uploadBtntap:(id)sender {
[self testFormUploader1]; //本地签名的表单上传
[self testFormUploader2]; //服务器端签名的表单上传(模拟)
[self testBlockUpLoader1]; //串行断点续传
[self testBlockUpLoader2]; //串行断点续传 后异步处理
[self testBlockUpLoader3]; // 并行分块断点续传
[self testBlockUpLoader4]; // 并行分块断点续传
// 因为异步签名和文件上传签名不一致. 所以如果需要上传之并进行异步处理. 只能使用本地签名
[self testBlockUpLoader5]; // 串行断点续传, 服务端签名.
[self testBlockUpLoader6]; // 并行断点续传 服务端签名
[self testFormUploaderAndAsyncTask]; //表单上传加异步多媒体处理--视频截图
[self testFormUploaderAndSyncTask]; //表单上传加同步图片处理--图片水印
[self testFileDeal]; // 文件异步处理请求
}