MinIO Dart
This is the unofficial MinIO Dart Client SDK that provides simple APIs to access any Amazon S3 compatible object storage server.
API
| Bucket operations | Object operations | Presigned operations | Bucket Policy & Notification operations | 
|---|---|---|---|
| makeBucket | getObject | presignedUrl | getBucketNotification | 
| listBuckets | getPartialObject | presignedGetObject | setBucketNotification | 
| bucketExists | fGetObject | presignedPutObject | removeAllBucketNotification | 
| removeBucket | putObject | presignedPostPolicy | listenBucketNotification | 
| listObjects | fPutObject | getBucketPolicy | |
| listObjectsV2 | copyObject | setBucketPolicy | |
| listIncompleteUploads | statObject | ||
| listAllObjects | removeObject | ||
| listAllObjectsV2 | removeObjects | ||
| removeIncompleteUpload | 
Usage
Initialize MinIO Client
MinIO
final minio = Minio(
  endPoint: 'play.min.io',
  accessKey: 'Q3AM3UQ867SPQQA43P2F',
  secretKey: 'zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG',
);
AWS S3
final minio = Minio(
  endPoint: 's3.amazonaws.com',
  accessKey: 'YOUR-ACCESSKEYID',
  secretKey: 'YOUR-SECRETACCESSKEY',
);
Filebase
final minio = Minio(
  endPoint: 's3.filebase.com',
  accessKey: 'YOUR-ACCESSKEYID',
  secretKey: 'YOUR-SECRETACCESSKEY',
  useSSL: true,
);
File upload
import 'package:minio/io.dart';
import 'package:minio/minio.dart';
void main() async {
  final minio = Minio(
    endPoint: 'play.min.io',
    accessKey: 'Q3AM3UQ867SPQQA43P2F',
    secretKey: 'zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG',
  );
  await minio.fPutObject('mybucket', 'myobject', 'path/to/file');
}
For complete example, see: example
To use
fPutObject()andfGetObject, you have toimport 'package:minio/io.dart';
Upload with progress
import 'package:minio/minio.dart';
void main() async {
  final minio = Minio(
    endPoint: 'play.min.io',
    accessKey: 'Q3AM3UQ867SPQQA43P2F',
    secretKey: 'zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG',
  );
  await minio.putObject(
    'mybucket',
    'myobject',
    Stream<Uint8List>.value(Uint8List(1024)),
    onProgress: (bytes) => print('$bytes uploaded'),
  );
}
Get object
import 'dart:io';
import 'package:minio/minio.dart';
void main() async {
  final minio = Minio(
    endPoint: 's3.amazonaws.com',
    accessKey: 'YOUR-ACCESSKEYID',
    secretKey: 'YOUR-SECRETACCESSKEY',
  );
  final stream = await minio.getObject('BUCKET-NAME', 'OBJECT-NAME');
  // Get object length
  print(stream.contentLength);
  // Write object data stream to file
  await stream.pipe(File('output.txt').openWrite());
}
Features and bugs
Please file feature requests and bugs at the issue tracker.
Contributions to this repository are welcome.