【Flutter】结合minio上传文件

使用包

  • 安装minio(当前为minio 3.5.0)
flutter pub add minio

https://pub.dev/packages/minio 需要科学上网工具

  • 安装uuid(文件名唯一)
flutter pub add uuid

实现代码

引入插件

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

实现逻辑

static Future<String> uploadImage({required String path}) async {
    try {
      print('image: $path');
      // 使用uuid生成资源名称(唯一)
      String name = Uuid().v4();
      // 获取文件后缀
      String suffix = path.substring(path.lastIndexOf("."));
      // 连接资源桶
      final minio = Minio(
        endPoint: MinioConfig.endPoint,
        port: MinioConfig.port,
        accessKey: MinioConfig.accessKey,
        secretKey: MinioConfig.secretKey,
        useSSL: MinioConfig.useSSL,
      );
      // 上传文件
      await minio.fPutObject('openim', name + suffix, path);
      // 返回上传文件的名称
      return "${MinioConfig.url}$name$suffix";
    } catch (err) {
      print("update image: err: $err");
      return "";
    }
  }

配置文件

// minio配置文件 (不知道的参数找后台要)
class MinioConfig {
  static const String endPoint = 'xxx.xxx.xxx.xxx'; // ip
  static const int port = 10005; // 端口
  static const String accessKey = 'username'; // 用户名
  static const String secretKey = 'paseword'; // 密码
  static const bool useSSL = false; // 是否开启https
  static get url {
    return "http://${endPoint}:${port}/openim/"; // 最后使用时,资源的前缀
  }
}

  • 注意点
  1. path是其他组件选中的图片路径,如:/data/user/0/com.hisw.im/cache/image_cropper_1667213840911.jpg
  2. endPoint参数只可以填写ip或域名,不能添加特殊符号(/也不能有),否则会报错:MinioError: End point 你的配置 is not a valid domain or ip address
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值