You need to enable JavaScript to run this app.
导航

使用 Flutter 访问 TOS

最近更新时间2024.05.08 17:22:15

首次发布时间2024.05.08 17:22:15

Flutter 是开源的移动应用开发框架。TOS 支持 Flutter SDK,您可以使用 Flutter 访问火山引擎对象存储服务 TOS,实现资源的上传和下载。本文以 Android Studio 为例,介绍使用 Flutter 访问 TOS 的操作步骤。

前提条件

操作步骤

  1. 导入 Flutter SDK 的依赖。

    • 执行以下命令,导入 http 模块。

      flutter pub get http 
      
    • 执行以下命令,导入 crypto 模块。

      flutter pub get crypto
      
  2. 创建 Flutter 应用。

    1. 在 Android Studio, 选择 File > New > New Flutter Project
    2. New Flutter Project 对话框左侧导航栏,单击 Flutter。
    3. Flutter SDK path 选择框设置 Flutter 的安装路径,单击 Next
    4. 设置 Project Name,单击 Create
  3. 创建并运行 Flutter SDK。

    1. tos_flutter_demo.dart 文件放到 lib 目录下。

    2. 在 tos_flutter_demo.dart 文件中设置 akskendpointbucketregion 等参数。
      以下代码块仅展示部分内容,详细内容,请参见 tos_flutter_demo.dart 文件。

      说明

      • 关于获取 Access Key ID 和 Secret Access Key 的具体步骤,请参见 Access Key 管理
      • 设置 endpoint 参数时,访问域名前需要添加 http://,例如 http://tos-cn-beijing.volces.com。关于 Endpoint 的详细介绍,请参见地域和访问域名(Endpoint)
      import 'dart:convert';
      
      import 'package:crypto/crypto.dart';
      import 'package:http/http.dart' as http;
      
      const String ak = 'AKLTM2NlN2E5Yzg2ZkNDBjMGIzZGU3MDllMzE4NzU****';  // Access Key ID
      const String sk = 'T1RkbVpHTmlNakl3TWpobE5EVmlObUkzTURrMU16SZakF4TWpNME0y****';  //Secret Access Key
      const String token = '/** Provide your Token **/';  //,使用临时访问凭证访问 TOS 时,需要设置该参数。
      const String endpoint = 'http://tos-cn-beijing.volces.com'; //TOS 访问域名
      const String bucket = 'test'; //存储桶的名称
      const String object = 'data.txt';  //对象名称
      const String region = 'cn-beijing';  //存储桶所在地域
      
      const String service = 'tos';
      const String request = 'request';
      const String algorithm = 'TOS4-HMAC-SHA256';
      
      void main() {   //如果你要执行对应操作,您需要去掉操作的注释,即删除双斜杠(//)。
        // listBuckets();
        putObject();
        // listObjects();
        // getObject();
        // deleteObject();
        // multipartUpload();
      }
      // 上传对象
      void putObject() async {
        var requestUrl = getBucketRequestUrl(objectKey: object);
        var headers = getAuthorization(requestUrl, 'PUT');
        try {
          var resp =
              await http.put(requestUrl, headers: headers, body: 'hello world');
          print('Response status: ${resp.statusCode}');
          if (resp.statusCode >= 300) {
            var body = jsonDecode(resp.body);
            printError(body);
          } else {
            print('putObject succeed');
          }
        } catch (err) {
          print(err);
        }
      }
      ......
      
    3. 完成参数设置后,单击 tos_flutter_demo.dart,然后单击 run tos_flutter_demo.dart
      预期返回以下内容:

      /data.txt
      canonicalRequest:
      PUT
      /data.txt
      
      host:test.tos-cn-beijing.volces.com
      
      host
      e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852****
      Response status: 200
      putObject succeed
      
      Process finished with exit code 0