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({params}, callback(ret, err))
bucketName:
operator:
password:
file:
saveKey:
ret:
上传中返回上传进度
{
   progress_rate:"89.9 %"   //上传进度,字符串
}
上传完成后
{
  responseBody:{  // 字典类型
     code: 200,
     message:'ok',                 //上传成功
     mimetype:'video/mp4'          //文件类型
     url: 'ios_sdk_new/video.mp4', //文件地址
     time: 1499310282,             //时间
     file_size: 4521321            //文件大小
  }
}
err:
{
    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){
        api.alert({
            msg: JSON.stringify(ret)
        })
    }
    else{
        api.alert({
            msg: JSON.stringify(err)
        })
    }
});
iOS系统,Android系统
可提供的1.0.0及更高版本
服务器端签名的表单上传
为了保证服务的安全性,使用服务的表单 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))
operator:
policy:
signature:
file:
ret:
上传中返回上传进度
{
   progress_rate:"89.9 %"   //上传进度,字符串
}
上传完成后
{
  responseBody:{  // 字典类型
     code: 200,
     message:'ok',                 //上传成功
     mimetype:'video/mp4'          //文件类型
     url: 'ios_sdk_new/video.mp4', //文件地址
     time: 1499310282,             //时间
     file_size: 4521321            //文件大小
  }
}
err:
{
    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){
        api.alert({
            msg: JSON.stringify(ret)
        })
    }
    else{
        api.alert({
            msg: JSON.stringify(err)
        })
    }
});
iOS系统,Android系统
可提供的1.0.0及更高版本
iOS系统,Android系统
可提供的1.0.0及更高版本
分块上传 分块上传接口只有一个,需要__本地签名__进行上传
blockUpLoader({params}, callback(ret, err))
bucketName:
operator:
operatorPassword:
filePath:
savePath:
ret:
上传中返回上传进度
{
   progress_rate:"89.9 %"   //上传进度,字符串
}
上传完成后
{
   msg:'上传成功'
}
err:
{
    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){
        api.alert({
            msg: JSON.stringify(ret)
        })
    }
    else{
        api.alert({
            msg: JSON.stringify(err)
        })
    }
});
iOS系统,Android系统
可提供的1.0.0及更高版本
表单上传加异步多媒体处理--视频截图 uploaderAndAsyncTask({params}, callback(ret, err))
bucketName:
operator:
password:
file:
saveKey:
otherParameters:
ret:
上传中返回上传进度
{
   progress_rate:"89.9 %"   //上传进度,字符串
}
上传完成后
{
  responseBody:{  // 字典类型
     code: 200,
     message:'ok',                 //上传成功
     mimetype:'video/mp4'          //文件类型
     url: 'ios_sdk_new/video.mp4', //文件地址
     time: 1499310282,             //时间
     file_size: 4521321            //文件大小
  }
}
err:
{
    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){
        api.alert({
            msg: JSON.stringify(ret)
        })
    }
    else{
        api.alert({
            msg: JSON.stringify(err)
        })
    }
});
iOS系统
可提供的1.0.0及更高版本
