baiduYunBos

概述

baiduYunBos插件封装了百度云对象存储服务BOS。

百度对象存储BOS(Baidu Object Storage)提供稳定、安全、高效、高可扩展的云存储服务。您可以将任意数量和形式的非结构化数据存入BOS,并对数据进行管理和处理。BOS支持标准、低频、冷存储等多种存储类型,满足您各类场景的存储需求。

使用前需了解百度云对象存储相关内容,可查看百度云对象存储文档

环境要求

1.ios系统版本:ios8.0及以上, 请注意编译时在编译界面的高级设置里面选择支持的系统版本。

2.Android: 编译时需勾选“使用升级环境编译”。

3.必须注册有百度云用户账户,并开通Bos服务。。

使用此插件之前先配置 config 文件,配置方法如下:

  • 名称:baiduYunBos
  • 参数:ak、sk、endPoint
  • 配置示例:
<feature name="baiduYunBos">
    <param name="ak" value="f773bf0ba565412b*****" />
    <param name="sk" value="6175cbefdf4e42******" />
    <param name="endPoint" value="https://gz.bcebos.com" />
</feature>
  • 字段描述:

    ak:百度云账号生成的Access Key ID, 是构建百度云 API 请求的重要凭证 [API密钥管理]

    sk:百度云账号生成的Secret Access Key, 是构建百度云 API 请求的重要凭证 [API密钥管理]

    endPoint:Endpoint 表示 Bos 对外服务的访问域名。[区域管理],记住要加协议类型(https://),如:https://gz.bcebos.com

插件接口

init

初始化sdk (调用优先级最高,只需要调用一次) 如果有输入参数,则使用输入的参数,否则默认从config文件中读取参数。

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

示例代码

var bos = api.require('baiduYunBos');
bos.init();

params

accessKey:

  • 类型:字符串
  • 描述:(可选项)从百度云获取的Access Key

secretKey:

  • 类型:字符串
  • 描述:(可选项)从百度云获取的Secret Key

endpoint:

  • 类型:字符串
  • 描述:(可选项)百度云Bos服务在各个区域的地址,如:https://gz.bcebos.com

token:

  • 类型:字符串
  • 描述:(可选项)STS临时授权访问使用的签名[临时授权访问]

type:

  • 类型:数字
  • 描述:(可选项)1-使用ak\sk初始化插件;2-STS临时授权访问, 使用该模式必须传accessKey、secretKey、token参数,推荐使用该模式进行开发
  • 默认值: 1

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    eventType: 'onError',    //字符串类型;事件类型
                             //取值范围:
                             //onError(失败)
}

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

putObject

简单上传,支持不超过5GB的Object上传;如果文件超过5GB请使用分块上传

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

params

bucket:

  • 类型:字符串
  • 描述:文件存储桶的名称,如:module-test

objectKey:

  • 类型:字符串
  • 描述:文件存储在云上的命名,如:test/test.jpg,云会自动创建test文件夹,以便存储文件

filePath:

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

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    eventType: 'onComplete',    //字符串类型;事件类型
                             //取值范围:
                             //onComplete(成功)
                             //onProgress(进度)
                             //onError(失败)
    progress: '',             //字符串类型;已上传进度,仅onProgress有值
    key: '',           //字符串类型;文件在云上的名称,仅onComplete有值
    etag: '',           //字符串类型;ETag (entity tag) 在每个Object生成的时候被创建,用于标示一个Object的内容。仅onComplete有值
    requestID: '',           //字符串类型;仅onComplete有值(仅ios有值)
}

示例代码

var bos = api.require('baiduYunBos');
bos.putObject({
    bucket: "module-test",
    objectKey: "test/img2",
    filePath: "widget://image/test.jpg"
}, function(ret, err){      
    if( ret ){
        alert( JSON.stringify( ret ) );
    }else{
        alert( JSON.stringify( err ) );
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

downloadObject

下载文件

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

params

bucket:

  • 类型:字符串
  • 描述:文件存储桶的名称,如:module-test

objectKey:

  • 类型:字符串
  • 描述:文件存储在云上的命名,如:test/test.jpg

filePath:

  • 类型:字符串
  • 描述:文件下载后的路径, 如:test.jpg

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    eventType: 'onComplete',    //字符串类型;事件类型
                             //取值范围:
                             //onComplete(成功)
                             //onProgress(进度)
                             //onError(失败)
    progress: '',             //字符串类型;已上传进度,仅onProgress有值
    localPath: ''              //字符串类型;文件下载的本地地址,仅onComplete有值
}

示例代码

var bos = api.require('baiduYunBos');
bos.downloadObject({
    bucket: "module-test",
    objectKey: "test/img1",
    filePath: "test.jpg"
}, function(ret, err){      
    if( ret ){
        alert( JSON.stringify( ret ) );
    }else{
        alert( JSON.stringify( err ) );
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

deleteObject

删除文件

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

params

bucket:

  • 类型:字符串
  • 描述:文件存储桶的名称,如:module-test

objectKey:

  • 类型:字符串
  • 描述:文件存储在云上的命名,如:test/test.jpg

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    eventType: 'onComplete',    //字符串类型;事件类型
                             //取值范围:
                             //onComplete(成功)
                                //onError(失败)
}

示例代码

var bos = api.require('baiduYunBos');
bos.deleteObject({
    bucket: "module-test",
    objectKey: "test/img1"
}, function(ret, err){      
    if( ret ){
        alert( JSON.stringify( ret ) );
    }else{
        alert( JSON.stringify( err ) );
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

copyObject

复制文件

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

params

srcBucket:

  • 类型:字符串
  • 描述:目标文件存储桶的名称,如:module-test

srcObjectKey:

  • 类型:字符串
  • 描述:目标文件存储在云上的命名,如:test/test1.jpg

dstBucket:

  • 类型:字符串
  • 描述:复制文件存储桶的名称,如:module-test

dstObjectKey:

  • 类型:字符串
  • 描述:复制文件存储在云上的命名,如:test/test2.jpg

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    eventType: 'onComplete',    //字符串类型;事件类型
                             //取值范围:
                             //onComplete(成功)
                             //onError(失败)
}

示例代码

var bos = api.require('baiduYunBos');
bos.copyObject({
    srcBucket: "module-test",
    srcObjectKey: "test/img1",
    dstBucket: "module-test",
    dstObjectKey: "test/img2"
}, function(ret, err){      
if( ret ){
        alert( JSON.stringify( ret ) );
    }else{
        alert( JSON.stringify( err ) );
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

initiateMultipartUpload

分块上传,使用场景:需要支持断点上传、上传超过5GB大小的文件、网络条件较差,和BOS的服务器之间的连接经常断开、需要流式地上传文件、上传文件之前,无法确定上传文件的大小等。

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

params

bucket:

  • 类型:字符串
  • 描述:文件存储桶的名称,如:module-test

objectKey:

  • 类型:字符串
  • 描述:文件存储在云上的命名,如:test/test.jpg,云会自动创建test文件夹,以便存储文件

filePath:

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

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    eventType: 'onComplete',    //字符串类型;事件类型
                             //取值范围:
                             //onInitComplete(初始化分块上传成功)
                             //onComplete(成功)
                             //onProgress(进度)
                             //onError(失败)
    uploadID: '',             //字符串类型;区分分块上传事件的唯一标识,仅onInitComplete有值
    
    partNumber: '',             //字符串类型;上传分块的标记,仅onProgress有值
    progress: '',             //字符串类型;上传分块的进度,仅onProgress有值
    partSize: '',             //字符串类型;上传分块的大小,仅onProgress有值
    allNumber: '',             //字符串类型;总的分块数,仅onProgress有值
    allSize: '',             //字符串类型;文件的总大小,仅onProgress有值
    
    location: '',           //字符串类型;文件的访问链接,仅onComplete有值
    key: '',           //字符串类型;文件在云上的名称,仅onComplete有值
    etag: '',           //字符串类型;ETag (entity tag) 在每个Object生成的时候被创建,用于标示一个Object的内容。仅onComplete有值
}

示例代码

var bos = api.require('baiduYunBos');
bos.initiateMultipartUpload({
    bucket: "module-test",
    objectKey: "test/test.zip",
    filePath: "widget://res/test.zip"
}, function(ret, err){      
if( ret ){
        alert( JSON.stringify( ret ) );
    }else{
        alert( JSON.stringify( err ) );
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

abortMultipartUpload

取消分块上传

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

params

bucket:

  • 类型:字符串
  • 描述:文件存储桶的名称,如:module-test

objectKey:

  • 类型:字符串
  • 描述:文件存储在云上的命名,如:test/test.jpg,云会自动创建test文件夹,以便存储文件

uploadID:

  • 类型:字符串
  • 描述:分块上传的标识

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    eventType: 'onComplete',    //字符串类型;事件类型
                             //取值范围:
                             //onComplete(成功)
                             //onError(失败)
}

示例代码

var bos = api.require('baiduYunBos');
bos.abortMultipartUpload({
    bucket: "module-test",
    objectKey: "test/test.zip",
    uploadID: "4bc0a2d64693f8c4ee3521953048e756"
}, function(ret, err){      
if( ret ){
        alert( JSON.stringify( ret ) );
    }else{
        alert( JSON.stringify( err ) );
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

listPartsRequest

获取已上传分块。默认情况下,如果Bucket中的分块上传事件的数目大于1000,则只会返回1000个Object

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

params

bucket:

  • 类型:字符串
  • 描述:文件存储桶的名称,如:module-test

objectKey:

  • 类型:字符串
  • 描述:文件存储在云上的命名,如:test/test.jpg,云会自动创建test文件夹,以便存储文件

uploadID:

  • 类型:字符串
  • 描述:分块上传的标识

maxParts:

  • 类型:数字
  • 描述:(可选项)每次获取最大分块上传事件的数目
  • 默认值: 1000

partNumberMarker:

  • 类型:数字
  • 描述:(可选项)分次读取,此次读取的开始位置;如:partNumberMarker为3,则读取位置从4开始
  • 默认值: 0

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    eventType: 'onComplete',    //字符串类型;事件类型
                             //取值范围:
                             //onComplete(成功)
                             //onError(失败)
    nextPartNumberMarker: '',             //数字类型;下次读取的起点,仅onComplete有值
    isTruncated: '',             //BOOL类型;为true时,说明还有分块未获取,仅onComplete有值
    
    partList: [             //数组类型;获取到的分块信息,仅onComplete有值
        partNumber: '',
        eTag: '',
        lastModified: '',
        size: '',
        storageClass: '',   //仅ios有值
    ]
}

示例代码

var bos = api.require('baiduYunBos');
bos.listPartsRequest({
    bucket: 'module-test',
    objectKey: 'test/test.zip',
    uploadID: '4bc0a2d64693f8c4ee3521953048e756'
}, function(ret, err){      
if( ret ){
        alert( JSON.stringify( ret ) );
    }else{
        alert( JSON.stringify( err ) );
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

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