upYun

概述

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){
        api.alert({
            msg: JSON.stringify(ret)
        })
    }
    else{
        api.alert({
            msg: 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){
        api.alert({
            msg: JSON.stringify(ret)
        })
    }
    else{
        api.alert({
            msg: 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:

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

callback(ret, err)

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){
        api.alert({
            msg: JSON.stringify(ret)
        })
    }
    else{
        api.alert({
            msg: JSON.stringify(err)
        })
    } 
});

可用性

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

上传中返回上传进度

{
   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){
        api.alert({
            msg: JSON.stringify(ret)
        })
    }
    else{
        api.alert({
            msg: JSON.stringify(err)
        })
    } 
});

可用性

iOS系统

可提供的1.0.0及更高版本

是否仍需要帮助? 请保持联络!
最后更新于 2024/04/24