flutter_aws_s3_client 0.5.2

Dart native js
Flutter Android iOS web

A simple, unofficial AWS S3 client in dart. Supports downloading objects and listing objects in a bucket.

Pub Package

flutter_aws_s3_client #

Supports downloading objects and listing objects in a bucket.

The heavy lifting was done by Amazon Cognito Identity SDK for Dart, this project contains just convenience methods for common use cases.

if you need more requests, you can use this instead to build what you need. If you implement more methods, feel free to open a pull request.

Usage #

Build the client #

  const region = "eu-central-1";
  const bucketId = "yourBucketId";
  final AwsS3Client s3client = AwsS3Client(
      region: region,
      host: "s3.$region.amazonaws.com",
      bucketId: bucketId,
      accessKey: "<your access key>",
      secretKey: "<your secret key>");

Get an object #

final response = await s3client.getObject("your/object/key"); 

List objects of the bucket #

ListBucketResult listBucketResult =
  await s3client.listObjects(prefix: "dir1/dir2/", delimiter: "/");
print(listBucketResult.toString());

If you want to use a custom http client, use the method buildSignedGetParams. This method returns an object containing the URL and the Authorization headers, which can be used to build the request with your preferred http client.

Download a large object to a file without keeping everything in-memory (streaming) #

Use the buildSignedGetParams method.

Example code (with ETag support):


Future download(String key, File file, [String etag = null]) async {

  final signedParams = awsS3Client.buildSignedGetParams(key: key);

  final request = await HttpClient().getUrl(signedParams.uri);

  for (final header in (signedParams.headers ?? const {}).entries) {
    request.headers.add(header.key, header.value);
  }
  if(eTag != null){
    request.headers.add(HttpHeaders.ifNoneMatchHeader, eTag);
  }
  final response = response = await request.close();
  if(response.statusCode != HttpStatus.ok){
     //handle error  
  }else{
     return response.pipe(file.openWrite());
  }
}
11
likes
100
pub points
86%
popularity

A simple, unofficial AWS S3 client in dart. Supports downloading objects and listing objects in a bucket.

Repository (GitHub)
View/report issues

Documentation

API reference

Uploaders

martin@diagnosia.com
vinzenz@diagnosia.com

License

MIT (LICENSE)

Dependencies

amazon_cognito_identity_dart_2, built_collection, built_value, http, xml2json

More

Packages that depend on flutter_aws_s3_client