aws_storage_service 1.0.1 copy "aws_storage_service: ^1.0.1" to clipboard
aws_storage_service: ^1.0.1 copied to clipboard

A package that handles Uploads and Downloads to the AWS S3 service

A simple Package to handle Uploads, Multipart Uploads and Downloads in Dart and Flutter apps.

``dart import 'dart:io';

import 'package:path/path.dart' as p;

import 'package:aws_storage_service/src/aws_storage_service.dart';

AwsCredentialsConfig credentialsConfig = AwsCredentialsConfig( accessKey: 'YOURACCESSKEY', // This is a test accessKey, It is invallid here bucketName: 'testbucket', // The bucket name region: 'us-west-2', // The region of your Aws bucket allocation secretKey: 'YOURAWSSECRETKEY', // Your secret Key );

testFunctions() async { await testFileUpload(); // This tests the file upload

await testMultipartUpload(); // Test mulltipart upload

await testResumeMultipartUpload(); // Test resuming multipart upload

await testDownload(); // Test download

await testResumeDownload(); // Test resume download }

Future testResumeDownload() async { //This tests uploading of a file String filePath = p.join(Directory.current.path, 'test_download.mp4');

String fileUrl = 'file/ftest.mp4'; // The Url of the file in the bucket

//Create a download config... //The download config contains all the configurations needed by the downloader to download the file DownloadFileConfig config = DownloadFileConfig( credentailsConfig: credentialsConfig, url: fileUrl, resumeDownload: true, // Set resume download to true if download is to be resumed downloadPath: filePath, // The file path of the file to be resumed );

DownloadFile downloadFile = DownloadFile( config: config, onRecieveProgress: ((totalDownloaded, totalSize) => print('Upload Status Callback ===> $totalDownloaded/$totalSize')), errorCallback: (errorMessage) => print('An error occurred $errorMessage'), ); // Create a download file instance

bool prepSuccessful = await downloadFile.prepareDownload(); // Prepate the download print('The download was prepared Successfully $prepSuccessful');

downloadFile.downloadProgress.listen((event) { //You can listen to the download progress print('Upload Status Stream ===> ${event[0]}/${event[1]}'); });

if (prepSuccessful) { await downloadFile.download().then((value) { downloadFile.dispose(); }); } }

Future testDownload() async { //Initiate a new upload String filePath = p.join(Directory.current.path, 'test_download.mp4');

String fileUrl = 'file/ftest.mp4'; //The file URl in the bucket

DownloadFileConfig config = DownloadFileConfig( credentailsConfig: credentialsConfig, url: fileUrl, downloadPath: filePath, );

DownloadFile downloadFile = DownloadFile( config: config, onRecieveProgress: ((totalDownloaded, totalSize) => print('Upload Status Callback ===> $totalDownloaded/$totalSize')), errorCallback: (errorMessage) => print('An error occurred $errorMessage'), );

bool prepSuccessful = await downloadFile.prepareDownload(); print('The download was prepared Successfully $prepSuccessful');

downloadFile.downloadProgress.listen((event) { print('Upload Status Stream ===> ${event[0]}/${event[1]}'); });

if (prepSuccessful) { await downloadFile.download().then((value) { downloadFile.dispose(); }); } }

Future testResumeMultipartUpload() async { String imageName = 'test.mp4'; //tHE Name of the file to be uploaded File file = File(p.join(Directory.current.path, 'test_files', imageName));

//EtagLists is a list of the etags that have been uploaded. //For every chunk uploaded to aws, an Etag id is returned. //The package has a method that returns all the uploaded etag lists everytime a chunk upload was successful final eTagLists = [ [2, "1ee28a7ac06786aff26d47298674c847"], [1, "18cc73a82389202aa085ee5751666726"], [4, "bf41ee73393dbfa1a5327fbb50aff054"], [5, "2848ec759573e3c5f6cadf1145e9efd9"] ];

//The version id of the upload id is the unique id given to this upload when the upload was started final versionIdOrUploadId = 'Zm9F2QhTuSZQHhnw1O8sThNk9fZ71lAUf20oTUQ11NrUaQy5DUwZ8oZ7fXuxCZywyY8mwUqsa54M3yg1S2QFIWGV.kv_QiMAxGlNHC55OAzBlDIusdJJ2jLF7qaQk9yg';

//Create the config object. MultipartUploadConfig config = MultipartUploadConfig( credentailsConfig: credentialsConfig, file: file, url: 'file/f$imageName', resumeMultipart: true, versionId: versionIdOrUploadId, etagsLists: eTagLists, );

MultipartFileUpload multipartFileUpload = MultipartFileUpload( config: config,

onError: (error, list, s) {
  print('An error occurred $error');
},

//The function onVersionIdCreated is called when the version id is just created.
//Since the version is always just created for a new multipart upload, It is basically only
//Needed when a new Multipart upload is done.
//The version id is a parameter. The version id can be cached for further use.
//The ball is in your court to do anything with the version id.
onVersionIdCreated: (versionId) => print('version id created $versionId'),

//Th e
onPartUploadComplete: (etagList, versionId) => print(
    'Part upload completed ---> etagList is $etagList and versionId is $versionId'),
onUploadComplete: (etagList, versionId) => print(
    'Part upload completed ---> etagList is $etagList and versionId is $versionId'),

);

multipartFileUpload.uploadCompletedState.listen((event) { //Event is a boolean. This is true when the file upload is done print('Upload State $event'); });

multipartFileUpload.uploadProgress.listen((event) { print('Upload progress \n${event[0]} / ${event[1]}'); });

bool preparingSuccessful = await multipartFileUpload.prepareMultipartRequest();

if (preparingSuccessful) { await multipartFileUpload.upload(); } }

Future testMultipartUpload() async { String imageName = 'test.mp4'; File file = File(p.join(Directory.current.path, 'test_files', imageName));

MultipartUploadConfig config = MultipartUploadConfig( file: file, url: 'file/f$imageName', credentailsConfig: credentialsConfig, );

MultipartFileUpload multipartFileUpload = MultipartFileUpload( config: config, onError: (error, list, s) { print('An error occurred $error'); },

//The function onVersionIdCreated is called when the version id is just created.
//Since the version is always just created for a new multipart upload, It is basically only
//Needed when a new Multipart upload is done.
//The version id is a parameter. The version id can be cached for further use.
//The ball is in your court to do anything with the version id.
onVersionIdCreated: (versionId) => print('version id created $versionId'),

//Th e
onPartUploadComplete: (etagList, versionId) => print(
    'Part upload completed ---> etagList is $etagList and versionId is $versionId'),
onUploadComplete: (etagList, versionId) => print(
    'Part upload completed ---> etagList is $etagList and versionId is $versionId'),

);

multipartFileUpload.uploadCompletedState.listen((event) { //Event is a boolean. This is true when the file upload is done print('Upload State $event'); });

multipartFileUpload.uploadProgress.listen((event) { print('Upload progress \n${event[0]} / ${event[1]}'); });

bool preparingSuccessful = await multipartFileUpload.prepareMultipartRequest();

if (preparingSuccessful) { await multipartFileUpload.upload(); } }

Future testFileUpload() async { File file = File(p.join(Directory.current.path, 'web.pdf'));

print(file.lengthSync());

UploadTaskConfig config = UploadTaskConfig( credentailsConfig: credentialsConfig, url: 'file/web23.pdf', uploadType: UploadType.file, file: file);

UploadFile uploadFile = UploadFile(config: config);

uploadFile.uploadProgress.listen((event) { print('${event[0]}/ ${event[1]}'); });

await uploadFile.upload().then((value) { print(value); uploadFile.dispose(); }); }

Future testUploadObject() async { String url = r'testfile.text';

UploadTaskConfig config = UploadTaskConfig( credentailsConfig: credentialsConfig, url: url, uploadType: UploadType.stringObject, content: 'Welcome to Amazon S3. agaian ana diwofofw ans');

final UploadObject uploadObject = UploadObject(config: config);

await uploadObject.upload(); }

2
likes
0
pub points
55%
popularity

Publisher

verified publisherpeterakande.com

A package that handles Uploads and Downloads to the AWS S3 service

License

unknown (LICENSE)

Dependencies

convert, crypto, dio, http, mocktail, path, rxdart, state_notifier, xml

More

Packages that depend on aws_storage_service