COS SDK有Flutter和React Native版本啦

Flutter 和 React Native 是目前最流行的跨平台框架,经过了时间的考验,也有成熟的团队在SDK、文档、社区等方面进行支持。

相对于传统的原生开发,跨平台方案在开发测试成本、产品一致性等方面有一定的优势。但是有时候使用第三方库时只有原生库,没有对应的 Flutter 和 React Native 库,这时候往往需要自行桥接,桥接会有一定的开发成本。现在COS SDK 提供了 Flutter 和 React Native 的 SDK,用户按照官方文档直接接入即可。

Flutter SDK 集成和使用

第一步:准备工作

1. 您需要一个纯 Flutter 项目或 Flutter 原生混合项目,这个应用可以是您现有的工程,也可以是您新建的一个空的工程。

2. Flutter 版本要求:sdk: ">=2.12.0 <3.0.0" ‍flutter: ">=2.5.0"

第二步:集成 SDK

运行此命令:flutter pub add tencentcloud_cos_sdk_plugin

第三步:开始使用

1. 初始化密钥

实现一个 IFetchCredentials 的类,实现请求临时密钥并返回结果的过程。

class FetchCredentials implements IFetchCredentials{  @override  Future<SessionQCloudCredentials> fetchSessionCredentials() async {    // 首先从您的临时密钥服务器获取包含了密钥信息的响应,例如:    var httpClient = HttpClient();    try {      // 临时密钥服务器 url      var stsUrl = "http://stsservice.com/sts";      var request = await httpClient.getUrl(Uri.parse(stsUrl));      var response = await request.close();      if (response.statusCode == HttpStatus.OK) {        var json = await response.transform(utf8.decoder).join();        print(json);
        // 然后解析响应,获取临时密钥信息        var data = jsonDecode(json);        // 最后返回临时密钥信息对象        return SessionQCloudCredentials(            secretId: data['credentials']['tmpSecretId'],// 临时密钥 SecretId            secretKey: data['credentials']['tmpSecretKey'],// 临时密钥 SecretKey            token: data['credentials']['sessionToken'],// 临时密钥 Token            startTime: data['startTime'],//临时密钥有效起始时间,单位是秒            expiredTime: data['expiredTime']//临时密钥有效截止时间戳,单位是秒        );      } else {        throw ArgumentError();      }    } catch (exception) {      throw ArgumentError();    }  }}

这里假设类名为 FetchCredentials。初始化一个实例,来给 SDK 提供密钥。

Cos().initWithSessionCredential(FetchCredentials());

2. 注册 COS 服务

// 存储桶所在地域简称,例如广州地区是 ap-guangzhouString region = "COS_REGION";// 创建 CosXmlServiceConfig 对象,根据需要修改默认的配置参数CosXmlServiceConfig serviceConfig = CosXmlServiceConfig(    region: region,    isDebuggable: true,    isHttps: true,);// 注册默认 COS ServiceCos().registerDefaultService(serviceConfig);
// 创建 TransferConfig 对象,根据需要修改默认的配置参数// TransferConfig 可以设置智能分块阈值 默认对大于或等于2M的文件自动进行分块上传,可以通过如下代码修改分块阈值TransferConfig transferConfig = TransferConfig(    forceSimpleUpload: false,    enableVerification: true,    divisionForUpload: 2097152, // 设置大于等于 2M 的文件进行分块上传    sliceSizeForUpload: 1048576, //设置默认分块大小为 1M);// 注册默认 COS TransferMangerCos().registerDefaultTransferManger(serviceConfig, transferConfig);

第四步:访问 COS 服务

以下用上传对象来示例,其他下载、删除、桶操作等更多详细使用,请参考 Flutter COS SDK网址。 SDK 支持上传本地文件、二进制数据。下面以上传本地文件为例:

   // 获取 TransferManager    CosTransferManger transferManager = Cos().getDefaultTransferManger();    // 存储桶名称,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称。https://console.cloud.tencent.com/cos5/bucket    String bucket = "examplebucket-1250000000";    String cosPath = "exampleobject"; //对象在存储桶中的位置标识符,即称对象键    String srcPath = "本地文件的绝对路径"; //本地文件的绝对路径    //开始上传    TransferTask transferTask = await transferManager.upload(bucket, cosPath,        filePath: srcPath    );

React Native SDK 集成和使用

第一步:准备工作

1. 您需要一个纯 React Native 项目或 React Native 原生混合项目,这个应用可以是您现有的工程,也可以是您新建的一个空的工程。

2. React Native 版本要求:0.69.7 及以上

第二步:集成 SDK

使用npm:    npm install --save react-native-cos-sdk

或者使用yarn:    yarn add react-native-cos-sdk

第三步:开始使用

1. 初始化密钥

调用 Cos 的 initWithSessionCredentialCallback 方法,实现请求临时密钥并返回结果的过程。

import Cos from 'react-native-cos-sdk';
Cos.initWithSessionCredentialCallback(async () => {  // 首先从您的临时密钥服务器获取包含了密钥信息的响应,例如:  // 临时密钥服务器 url  let stsUrl = "http://stsservice.com/sts";  const response = await fetch(stsUrl);  // 然后解析响应,获取临时密钥信息  const responseJson = await response.json();  const credentials = responseJson.credentials;  const startTime = responseJson.startTime;  const expiredTime = responseJson.expiredTime;  const sessionCredentials = {    tmpSecretId: credentials.tmpSecretId,    tmpSecretKey: credentials.tmpSecretKey,    startTime: startTime,    expiredTime: expiredTime,    sessionToken: credentials.sessionToken  };  console.log(sessionCredentials);  // 最后返回临时密钥信息对象  return sessionCredentials;})

 2. 注册 COS 服务

// 存储桶所在地域简称,例如广州地区是 ap-guangzhoulet region = "COS_REGION";// 创建 CosXmlServiceConfig 对象,根据需要修改默认的配置参数let serviceConfig = {    region: region,    isDebuggable: true,    isHttps: true,};// 注册默认 COS Servicelet cosService = await Cos.registerDefaultService(serviceConfig);// 获取默认 COS Servicelet cosService1 = Cos.getDefaultService();
// 创建 TransferConfig 对象,根据需要修改默认的配置参数// TransferConfig 可以设置智能分块阈值 默认对大于或等于2M的文件自动进行分块上传,可以通过如下代码修改分块阈值let transferConfig = {    forceSimpleUpload: false,    enableVerification: true,    divisionForUpload: 2097152, // 设置大于等于 2M 的文件进行分块上传    sliceSizeForUpload: 1048576, //设置默认分块大小为 1M};// 注册默认 COS TransferMangerlet cosTransferManger = await Cos.registerDefaultTransferManger(serviceConfig, transferConfig);// 获取默认 COS TransferMangerlet cosTransferManger1 = Cos.getDefaultTransferManger();

第四步:访问 COS 服务

以下用上传对象来示例,其他下载、删除、桶操作等更多详细使用,请参考 React Native COS SDK网址

 // 获取 CosTransferManger    let cosTransferManger: CosTransferManger = Cos.getDefaultTransferManger();    //let cosTransferManger: CosTransferManger = Cos.getTransferManger(newRegion);    // 存储桶名称,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称。https://console.cloud.tencent.com/cos5/bucket    let bucket = "examplebucket-1250000000";    let cosPath = "exampleobject"; //对象在存储桶中的位置标识符,即称对象键    let srcPath = "本地文件的路径"; //本地文件的路径    //开始上传    let transferTask:TransferTask = await cosTransferManger.upload(      bucket,      cosPath,      srcPath    );
posted @ 2023-08-01 20:31  粤海科技君  阅读(49)  评论(0编辑  收藏  举报