upYun
来自于:官方立即使用
localUploader serverUploader blockUpLoader uploaderAndAsyncTask
概述
SDK 功能简介
UPYUN iOS SDK 集成了表单上传UpYunFormUploader 和分块上传 UpYunBlockUpLoader 两部分,分别实现了以下文档接口:
1.又拍云存储 FORM API 表单上传接口(http://docs.upyun.com/api/form_api/) 2.又拍云存储 REST API 断点续传接口(http://docs.upyun.com/api/rest_api/#_3)
表单上传 适用于上传图片、短视频等小文件。(另外通过 otherParameters 可实现方便的图片视频预处理功能) 分块上传 适用于大文件上传和断点续传。(特别地,断点续传上传的图片不支持预处理)
运行环境
iOS 8.0 及以上版本, ARC 模式, 基于系统网络库 NSURLSession 发送 HTTP 请求。
模块概述
upYun模块封装了UPYUNSDK,支持表单上传和分块上传。表单上传支持本地签名和服务器端签名上传,还支持表单上传加异步多媒体处理--视频截图,详情参考 http://docs.upyun.com/api/form_api/#_2
模块接口
localUploader
本地签名的表单上传
localUploader({params}, callback(ret, err))
params
bucketName:
- 类型:字符串
- 描述:上传空间名
operator:
- 类型:字符串
- 描述:空间操作员
password:
- 类型:字符串
- 描述:空间操作员密码
file:
- 类型:字符串
- 描述:上传文件,支持fs://、cache://等文件路径协议及真实路径。
saveKey:
- 类型:字符串
- 描述:上传文件的保存路径
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
上传中返回上传进度
{
progress_rate:"89.9 %" //上传进度,字符串
}
上传完成后
{
responseBody:{ // 字典类型
code: 200,
message:'ok', //上传成功
mimetype:'video/mp4' //文件类型
url: 'ios_sdk_new/video.mp4', //文件地址
time: 1499310282, //时间
file_size: 4521321 //文件大小
}
}
err:
- 类型:JSON对象
- 内部字段:
{
code: 404, //数字类型;错误码
msg:"错误信息描述" //字符串类型;
}
示例代码
var upYun = api.require('upYun');
upYun.localUploader({
bucketName:'test86400',
operator:'operator123',
password:'password123',
file:'fs://video.mp4',
saveKey:'ios_sdk_new/video.mp4',
},function(ret, err) {
if(ret){
alert(JSON.stringify(ret));
}
else{
alert(JSON.stringify(err));
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
serverUploader
服务器端签名的表单上传
signature 算法
为了保证服务的安全性,使用服务的表单 API 密钥(可登录又拍云控制台查看)对 policy 进行签名,签名的结果即是 signature。
signature 生成步骤:
1.生成 policy 字符串(见 policy 算法 http://docs.upyun.com/api/authorization/#policy);
2.将第 1 步中的字符串与表单 API 密钥字符串用 & 拼接;
3.将第 2 步中的字符串计算 md5,所得即为 signature。
例如,假设服务的表单 API 验证密钥为:cAnyet74l9hdUag34h2dZu8z7gU=
第一步,生成 policy 字符串:
eyJidWNrZXQiOiJkZW1vYnVja2V0IiwiZXhwaXJhdGlvbiI6MTQwOTIwMDc1OCwic2F2ZS1rZXkiOiIvaW1nLmpwZyJ9
第二步,第一步的字符串与表单 API 密钥字符串用 & 拼接:
eyJidWNrZXQiOiJkZW1vYnVja2V0IiwiZXhwaXJhdGlvbiI6MTQwOTIwMDc1OCwic2F2ZS1rZXkiOiIvaW1nLmpwZyJ9&cAnyet74l9hdUag34h2dZu8z7gU=
第三步,将第二步的字符串计算 md5 后即得到 signature:
646a6a629c344ce0e6a10cadd49756d4
serverUploader({params}, callback(ret, err))
params
operator:
- 类型:字符串
- 描述:空间操作员
policy:
- 类型:字符串
- 描述:上传策略
signature:
- 类型:字符串
- 描述:上传策略签名
file:
- 类型:字符串
- 描述:上传文件,支持fs://、cache://等文件路径协议及真实路径。
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
上传中返回上传进度
{
progress_rate:"89.9 %" //上传进度,字符串
}
上传完成后
{
responseBody:{ // 字典类型
code: 200,
message:'ok', //上传成功
mimetype:'video/mp4' //文件类型
url: 'ios_sdk_new/video.mp4', //文件地址
time: 1499310282, //时间
file_size: 4521321 //文件大小
}
}
err:
- 类型:JSON对象
- 内部字段:
{
code: 404, //数字类型;错误码
msg:"错误信息描述" //字符串类型;
}
示例代码
var upYun = api.require('upYun');
upYun.serverUploader({
operator:'one',
policy: 'eyJleHBpcmF0aW9uIjoxNDg5Mzc4NjExLCJyZXR1cm4tdXJsIjoiaHR0cGJpbi5vcmdcL3Bvc3QiLCJidWNrZXQiOiJmb3JtdGVzdCIsInNhdmUta2V5IjoiXC91cGxvYWRzXC97eWVhcn17bW9ufXtkYXl9XC97cmFuZG9tMzJ9ey5zdWZmaXh9In0=',
signature:'BIC22iXgu5fBUXgoMGGpdWNpsak=',
file:'fs://picture.jpg',
},function(ret, err) {
if(ret){
alert(JSON.stringify(ret));
}
else{
alert(JSON.stringify(err));
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
blockUpLoader
分块上传
分块上传接口只有一个,需要本地签名进行上传
blockUpLoader({params}, callback(ret, err))
params
bucketName:
- 类型:字符串
- 描述:上传空间名
operator:
- 类型:字符串
- 描述:空间操作员
operatorPassword:
- 类型:字符串
- 描述:空间操作员密码
filePath:
- 类型:字符串
- 描述:上传文件本地路径,支持fs://、cache://等文件路径协议及真实路径。
savePath:
ret:
- 类型:JSON 对象
- 内部字段:
上传中返回上传进度
{
progress_rate:"89.9 %" //上传进度,字符串
}
上传完成后
{
msg:'上传成功'
}
err:
- 类型:JSON对象
- 内部字段:
{
code: 404, //数字类型;错误码
msg:"错误信息描述" //字符串类型;
}
示例代码
var upYun = api.require('upYun');
upYun.blockUpLoader({
bucketName:'test86400',
operatorPassword:'operator123',
password:'password123',
filePath:'fs://video.mp4',
savePath:'iossdk/blockupload/yyyyyyyyyyyyyyyyy.mp4',
},function(ret, err) {
if(ret){
alert(JSON.stringify(ret));
}
else{
alert(JSON.stringify(err));
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
uploaderAndAsyncTask
表单上传加异步多媒体处理--视频截图 uploaderAndAsyncTask({params}, callback(ret, err))
params
bucketName:
- 类型:字符串
- 描述:上传空间名
operator:
- 类型:字符串
- 描述:空间操作员
password:
- 类型:字符串
- 描述:空间操作员密码
file:
- 类型:字符串
- 描述:上传文件,支持fs://、cache://等文件路径协议及真实路径。
saveKey:
- 类型:字符串
- 描述:上传文件的保存路径
otherParameters:
- 类型:字符串
- 描述:(可选项)具体参考表单参数,http://docs.upyun.com/api/form_api/#_2
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
上传中返回上传进度
{
progress_rate:"89.9 %" //上传进度,字符串
}
上传完成后
{
responseBody:{ // 字典类型
code: 200,
message:'ok', //上传成功
mimetype:'video/mp4' //文件类型
url: 'ios_sdk_new/video.mp4', //文件地址
time: 1499310282, //时间
file_size: 4521321 //文件大小
}
}
err:
- 类型:JSON对象
- 内部字段:
{
code: 404, //数字类型;错误码
msg:"错误信息描述" //字符串类型;
}
示例代码
var upYun = api.require('upYun');
upYun.uploaderAndAsyncTask({
bucketName:'test86400',
operator:'operator123',
password:'password123',
file:'fs://video.mp4',
saveKey:'ios_sdk_new/video.mp4',
otherParameters: {name: 'naga',
type: 'thumbnail',
save_as: 'ios_sdk_new/test2/video.jpg',
avopts: '/o/true/n/1/',
notify_url: 'http://124.160.114.202:18989/echo'},
},function(ret, err) {
if(ret){
alert(JSON.stringify(ret));
}
else{
alert(JSON.stringify(err));
}
});
可用性
iOS系统
可提供的1.0.0及更高版本