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 对象
  • 内部字段:

上传中返回上传进度

  1. {
  2. progress_rate:"89.9 %" //上传进度,字符串
  3. }

上传完成后

  1. {
  2. responseBody:{ // 字典类型
  3. code: 200,
  4. message:'ok', //上传成功
  5. mimetype:'video/mp4' //文件类型
  6. url: 'ios_sdk_new/video.mp4', //文件地址
  7. time: 1499310282, //时间
  8. file_size: 4521321 //文件大小
  9. }
  10. }

err:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. code: 404, //数字类型;错误码
  3. msg:"错误信息描述" //字符串类型;
  4. }

示例代码

  1. var upYun = api.require('upYun');
  2. upYun.localUploader({
  3. bucketName:'test86400',
  4. operator:'operator123',
  5. password:'password123',
  6. file:'fs://video.mp4',
  7. saveKey:'ios_sdk_new/video.mp4',
  8. },function(ret, err) {
  9. if(ret){
  10. alert(JSON.stringify(ret));
  11. }
  12. else{
  13. alert(JSON.stringify(err));
  14. }
  15. });

可用性

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 字符串:

  1. eyJidWNrZXQiOiJkZW1vYnVja2V0IiwiZXhwaXJhdGlvbiI6MTQwOTIwMDc1OCwic2F2ZS1rZXkiOiIvaW1nLmpwZyJ9

第二步,第一步的字符串与表单 API 密钥字符串用 & 拼接:

  1. eyJidWNrZXQiOiJkZW1vYnVja2V0IiwiZXhwaXJhdGlvbiI6MTQwOTIwMDc1OCwic2F2ZS1rZXkiOiIvaW1nLmpwZyJ9&cAnyet74l9hdUag34h2dZu8z7gU=

第三步,将第二步的字符串计算 md5 后即得到 signature:

  1. 646a6a629c344ce0e6a10cadd49756d4

serverUploader({params}, callback(ret, err))

params

operator:

  • 类型:字符串
  • 描述:空间操作员

policy:

  • 类型:字符串
  • 描述:上传策略

signature:

  • 类型:字符串
  • 描述:上传策略签名

file:

  • 类型:字符串
  • 描述:上传文件,支持fs://、cache://等文件路径协议及真实路径。

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:

上传中返回上传进度

  1. {
  2. progress_rate:"89.9 %" //上传进度,字符串
  3. }

上传完成后

  1. {
  2. responseBody:{ // 字典类型
  3. code: 200,
  4. message:'ok', //上传成功
  5. mimetype:'video/mp4' //文件类型
  6. url: 'ios_sdk_new/video.mp4', //文件地址
  7. time: 1499310282, //时间
  8. file_size: 4521321 //文件大小
  9. }
  10. }

err:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. code: 404, //数字类型;错误码
  3. msg:"错误信息描述" //字符串类型;
  4. }

示例代码

  1. var upYun = api.require('upYun');
  2. upYun.serverUploader({
  3. operator:'one',
  4. policy: 'eyJleHBpcmF0aW9uIjoxNDg5Mzc4NjExLCJyZXR1cm4tdXJsIjoiaHR0cGJpbi5vcmdcL3Bvc3QiLCJidWNrZXQiOiJmb3JtdGVzdCIsInNhdmUta2V5IjoiXC91cGxvYWRzXC97eWVhcn17bW9ufXtkYXl9XC97cmFuZG9tMzJ9ey5zdWZmaXh9In0=',
  5. signature:'BIC22iXgu5fBUXgoMGGpdWNpsak=',
  6. file:'fs://picture.jpg',
  7. },function(ret, err) {
  8. if(ret){
  9. alert(JSON.stringify(ret));
  10. }
  11. else{
  12. alert(JSON.stringify(err));
  13. }
  14. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

blockUpLoader

分块上传
分块上传接口只有一个,需要本地签名进行上传

blockUpLoader({params}, callback(ret, err))

params

bucketName:

  • 类型:字符串
  • 描述:上传空间名

operator:

  • 类型:字符串
  • 描述:空间操作员

operatorPassword:

  • 类型:字符串
  • 描述:空间操作员密码

filePath:

  • 类型:字符串
  • 描述:上传文件本地路径,支持fs://、cache://等文件路径协议及真实路径。

savePath:

  • 类型:字符串
  • 描述:上传文件的保存路径, 例如:“/2015/0901/file1.jpg”

    callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:

上传中返回上传进度

  1. {
  2. progress_rate:"89.9 %" //上传进度,字符串
  3. }

上传完成后

  1. {
  2. msg:'上传成功'
  3. }

err:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. code: 404, //数字类型;错误码
  3. msg:"错误信息描述" //字符串类型;
  4. }

示例代码

  1. var upYun = api.require('upYun');
  2. upYun.blockUpLoader({
  3. bucketName:'test86400',
  4. operatorPassword:'operator123',
  5. password:'password123',
  6. filePath:'fs://video.mp4',
  7. savePath:'iossdk/blockupload/yyyyyyyyyyyyyyyyy.mp4',
  8. },function(ret, err) {
  9. if(ret){
  10. alert(JSON.stringify(ret));
  11. }
  12. else{
  13. alert(JSON.stringify(err));
  14. }
  15. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

uploaderAndAsyncTask

表单上传加异步多媒体处理--视频截图 uploaderAndAsyncTask({params}, callback(ret, err))

params

bucketName:

  • 类型:字符串
  • 描述:上传空间名

operator:

  • 类型:字符串
  • 描述:空间操作员

password:

  • 类型:字符串
  • 描述:空间操作员密码

file:

  • 类型:字符串
  • 描述:上传文件,支持fs://、cache://等文件路径协议及真实路径。

saveKey:

  • 类型:字符串
  • 描述:上传文件的保存路径

otherParameters:

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:

上传中返回上传进度

  1. {
  2. progress_rate:"89.9 %" //上传进度,字符串
  3. }

上传完成后

  1. {
  2. responseBody:{ // 字典类型
  3. code: 200,
  4. message:'ok', //上传成功
  5. mimetype:'video/mp4' //文件类型
  6. url: 'ios_sdk_new/video.mp4', //文件地址
  7. time: 1499310282, //时间
  8. file_size: 4521321 //文件大小
  9. }
  10. }

err:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. code: 404, //数字类型;错误码
  3. msg:"错误信息描述" //字符串类型;
  4. }

示例代码

  1. var upYun = api.require('upYun');
  2. upYun.uploaderAndAsyncTask({
  3. bucketName:'test86400',
  4. operator:'operator123',
  5. password:'password123',
  6. file:'fs://video.mp4',
  7. saveKey:'ios_sdk_new/video.mp4',
  8. otherParameters: {name: 'naga',
  9. type: 'thumbnail',
  10. save_as: 'ios_sdk_new/test2/video.jpg',
  11. avopts: '/o/true/n/1/',
  12. notify_url: 'http://124.160.114.202:18989/echo'},
  13. },function(ret, err) {
  14. if(ret){
  15. alert(JSON.stringify(ret));
  16. }
  17. else{
  18. alert(JSON.stringify(err));
  19. }
  20. });

可用性

iOS系统

可提供的1.0.0及更高版本