simple_s3

Creator: coderz1093

Last updated:

Add to Cart

Description:

simple s3

simple_s3 #
An advance yet simple to use AWS S3 plugin for upload and deletion.
Simple S3 uses AWS Native SDKs for iOS and Android
Getting started #
Add dependency in pubspec.yaml
simple_s3: 0.3.2
Follow @ab_hi_j on Twitter
Features #



Feature
Description




Null Safe



Upload Percentage



Supports all files
SimpleS3 auto detects content type of file by looking into extension


Set Access Type
Allows you to set access type of file ex. PublicRead, Private etc Default is Public Read


Timestamp
Turned off by default if turned on allows you to append timestamp in file name. Location of timestamp can be changed to either prefix or suffix Default is prefix


Custom File Name
Allows to change name of file about to upload. Note : File name must contain extension.


Custom S3 folder path
Allows to upload file to specific folder in S3


Sub Region Support
Allows upload/delete operations on S3 having sub regions


Delete Object
Allows deletion of file object


Auto Generates URL
URL pointing to S3 file is auto generated.





Not working in Android Release mode ? #
If your Android app is not working in release mode please check this section

Usage Examples #
Simple File Upload #

// returns url pointing to S3 file

SimpleS3 _simpleS3 = SimpleS3();
String result = await _simpleS3.uploadFile(
file, <--------------- Selected File
bucketName, <--------- Your Bucket Name
poolID, <------------- Your POOL ID
AWSRegions.apSouth1 <- S3 server region
);

copied to clipboard
Delete #

// returns bool

bool result = await SimpleS3.delete(
filePath, <---------------- S3 File Path
bucketName, <-------------- Your Bucket Name
poolID, <------------------ Your POOL ID
AWSRegions.apSouth1, <----- S3 server region
);

// delete also supports sub-regions

copied to clipboard
File Upload with Percentage #

// returns url pointing to S3 file

SimpleS3 _simpleS3 = SimpleS3();
//Upload function
String result = await _simpleS3.uploadFile(
file, <--------------- Selected File
bucketName, <--------- Your Bucket Name
poolID, <------------- Your POOL ID
AWSRegions.apSouth1 <- S3 server region
);

//Widget
child: StreamBuilder<dynamic>(
stream: _simpleS3.getUploadPercentage,
builder: (context, snapshot) {
return new Text(
snapshot.data != null ? "Uploaded: ${snapshot.data}" : "Simple S3",
);
}),

copied to clipboard
Custom File Name #

// returns url pointing to S3 file

SimpleS3 _simpleS3 = SimpleS3();
String result = await _simpleS3.uploadFile(
file, <------------------------------ Selected File
bucketName, <------------------------ Your Bucket Name
poolID, <---------------------------- Your POOL ID
AWSRegions.apSouth1, <--------------- S3 server region
fileName: "Dennis_ritchie.jpeg", <--- Custom file name
);

copied to clipboard
Custom S3 Path #

// returns url pointing to S3 file

SimpleS3 _simpleS3 = SimpleS3();
String result = await _simpleS3.uploadFile(
file, <-------------------------------- Selected File
bucketName, <--------------------------- Your Bucket Name
poolID, <------------------------------- Your POOL ID
AWSRegions.apSouth1, <------------------ S3 server region
s3FolderPath: "users/profile_pics", <--- Custom S3 path
);

// final path will be "bucketName/users/profile_pics"

copied to clipboard
Setting Access Control #

// returns url pointing to S3 file

SimpleS3 _simpleS3 = SimpleS3();
String result = await _simpleS3.uploadFile(
file, <------------------------------------- Selected File
bucketName, <------------------------------- Your Bucket Name
poolID, <----------------------------------- Your POOL ID
AWSRegions.apSouth1, <---------------------- S3 server region
accessControl: S3AccessControl.private, <--- Setting access of uploaded file **private**
);

// S3AccessControl have more types of AccessControl ex. .publicRead, .publicReadWrite etc...

copied to clipboard
Using Timestamp #

// returns url pointing to S3 file

SimpleS3 _simpleS3 = SimpleS3();
String result = await _simpleS3.uploadFile(
file, <------------------------------------- Selected File
bucketName, <------------------------------- Your Bucket Name
poolID, <----------------------------------- Your POOL ID
AWSRegions.apSouth1, <---------------------- S3 server region
useTimeStamp: true, <----------------------- Enable Timestamp
);

// default location of timestamp is prefix
// if original file name = "Dennis_ritchie.jpeg"
// then the result will be = "1591705658_Dennis_ritchie.jpeg"


// Change Timestamp Location



SimpleS3 _simpleS3 = SimpleS3();
String result = await _simpleS3.uploadFile(
file, <--------------------------------------- Selected File
bucketName, <--------------------------------- Your Bucket Name
poolID, <------------------------------------- Your POOL ID
AWSRegions.apSouth1, <------------------------ S3 server region
useTimeStamp: true, <------------------------- Enable Timestamp
timeStampLocation: TimestampLocation.suffix,<- Changes timestamp location to suffix
);
// if original file name = "Dennis_ritchie.jpeg"
// then the result will be = "Dennis_ritchie_1591705658.jpeg"

copied to clipboard
Using Sub-Region #

// returns url pointing to S3 file

SimpleS3 _simpleS3 = SimpleS3();
String result = await _simpleS3.uploadFile(
file, <------------------------------------- Selected File
bucketName, <------------------------------- Your Bucket Name
poolID, <----------------------------------- Your POOL ID
AWSRegions.apSouth1, <---------------------- S3 server region
subRegion: AWSRegions.apNorthEast1 <-------- Sub region
);

copied to clipboard
Debug mode #

// for security reasons plugin uses less logs, to enable full logs -

SimpleS3 _simpleS3 = SimpleS3();
String result = await _simpleS3.uploadFile(
file, <--------------- Selected File
bucketName, <--------- Your Bucket Name
poolID, <------------- Your POOL ID
AWSRegions.apSouth1 <- S3 server region
debugLog: true, <----- Enable full logs
);

copied to clipboard
Android Proguard settings for release mode #

// add these lines in your app/build.gradle

minifyEnabled true
useProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-aws-2.1.5.pro'

//EXAMPLE
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
useProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-aws-2.1.5.pro'
}
}
copied to clipboard
Now copy contents of this file proguard-aws-2.1.5.pro
Create a new file with name "proguard-aws-2.1.5.pro" at the same location as app/build.gradle and paste the copied contents into this file.
Your release mode APK should work now.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.