Flutter对象存储管理插件minio_flutter的使用

发布于 1周前 作者 phonegap100 来自 Flutter

Flutter对象存储管理插件minio_flutter的使用

初始化

MinIO

Minio.init(
  endPoint: 'play.min.io',
  accessKey: 'Q3AM3UQ867SPQQA43P2F',
  secretKey: 'zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG',
  region: 'us-east-1',
);

AWS S3

Minio.init(
  endPoint: 's3.amazonaws.com',
  accessKey: 'YOUR-ACCESSKEYID',
  secretKey: 'YOUR-SECRETACCESSKEY',
  region: 'us-east-1',
);

Filebase

Minio.init(
  endPoint: 's3.filebase.com',
  accessKey: 'YOUR-ACCESSKEYID',
  secretKey: 'YOUR-SECRETACCESSKEY',
  useSSL: true,
);

文件上传

import 'package:minio_flutter/io.dart';
import 'package:minio_flutter/minio.dart';

void main() async {
  Minio.init(
    endPoint: 'play.min.io',
    accessKey: 'Q3AM3UQ867SPQQA43P2F',
    secretKey: 'zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG',
  );

  await Minio.shared.fPutObject('mybucket', 'myobject', 'path/to/file');
}

注意:要使用fPutObject()fGetObject(),你需要导入package:minio_flutter/io.dart

带进度的上传

import 'package:minio_flutter/minio.dart';

void main() async {
  Minio.init(
    endPoint: 'play.min.io',
    accessKey: 'Q3AM3UQ867SPQQA43P2F',
    secretKey: 'zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG',
  );

  await Minio.shared.putObject(
    'mybucket', 
    'myobject', 
    Stream<Uint8List>.value(Uint8List(1024)),
    onProgress: (bytes) => print('$bytes uploaded'),
  );
}

获取对象

import 'dart:io';
import 'package:minio_flutter/minio.dart';

void main() async {
  Minio.init(
    endPoint: 's3.amazonaws.com',
    accessKey: 'YOUR-ACCESSKEYID',
    secretKey: 'YOUR-SECRETACCESSKEY',
  );

  final stream = await Minio.shared.getObject('BUCKET-NAME', 'OBJECT-NAME');

  // 获取对象长度
  print(stream.contentLength);

  // 将对象数据流写入文件
  await stream.pipe(File('output.txt').openWrite());
}

更多关于Flutter对象存储管理插件minio_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter对象存储管理插件minio_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何使用 minio_flutter 插件在 Flutter 应用中进行对象存储管理的代码示例。这个示例将涵盖初始化 MinIO 客户端、创建存储桶、上传文件以及下载文件的基本操作。

首先,确保你已经在 pubspec.yaml 文件中添加了 minio_flutter 依赖:

dependencies:
  flutter:
    sdk: flutter
  minio_flutter: ^latest_version  # 请替换为最新版本号

然后运行 flutter pub get 来获取依赖。

接下来,是一个简单的 Flutter 应用示例,展示如何使用 minio_flutter

import 'package:flutter/material.dart';
import 'package:minio_flutter/minio_flutter.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final MinioClient _minioClient = MinioClient(
    endPoint: 'https://your-minio-server-endpoint',
    port: 9000,
    accessKey: 'your-access-key',
    secretKey: 'your-secret-key',
    useSSL: false,  // 根据你的MinIO服务器配置设置
  );

  String _status = 'Initializing...';

  @override
  void initState() {
    super.initState();
    _initializeMinio();
  }

  Future<void> _initializeMinio() async {
    try {
      // 检查MinIO服务器连接
      bool isAlive = await _minioClient.isAlive();
      if (isAlive) {
        setState(() {
          _status = 'MinIO server is alive!';
        });

        // 创建存储桶(如果不存在)
        String bucketName = 'my-new-bucket';
        bool bucketExists = await _minioClient.bucketExists(bucketName);
        if (!bucketExists) {
          await _minioClient.makeBucket(bucketName, region: 'us-east-1');
          setState(() {
            _status += '\nBucket created: $bucketName';
          });
        } else {
          setState(() {
            _status += '\nBucket already exists: $bucketName';
          });
        }

        // 上传文件
        String objectName = 'my-uploaded-file.txt';
        String filePath = 'path/to/your/local/file.txt';
        await _minioClient.putObject(bucketName, objectName, filePath);
        setState(() {
          _status += '\nFile uploaded: $objectName';
        });

        // 下载文件
        String downloadPath = 'path/to/your/download/directory/file.txt';
        await _minioClient.getObject(bucketName, objectName, downloadPath);
        setState(() {
          _status += '\nFile downloaded to: $downloadPath';
        });
      } else {
        setState(() {
          _status = 'Failed to connect to MinIO server.';
        });
      }
    } catch (e) {
      setState(() {
        _status = 'Error: ${e.message}';
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Minio Flutter Example'),
        ),
        body: Center(
          child: Text(_status),
        ),
      ),
    );
  }
}

注意事项:

  1. 配置信息:确保你替换了示例代码中的 endPointaccessKeysecretKey 等配置信息为你自己的 MinIO 服务器信息。
  2. 文件路径:在上传和下载文件时,确保提供的文件路径是有效的。
  3. 错误处理:示例代码仅做了简单的错误捕获,实际应用中可能需要更详细的错误处理逻辑。
  4. SSL:如果你的 MinIO 服务器启用了 SSL,确保将 useSSL 设置为 true,并可能需要处理证书验证等问题。

这个示例展示了如何使用 minio_flutter 插件进行基本的对象存储管理操作。根据你的具体需求,你可以进一步扩展这些功能。

回到顶部