flutter_oss_aliyun 3.1.0 flutter_oss_aliyun: ^3.1.0 copied to clipboard
oss aliyun plugin for flutter and upport STS to access OSS temporarily
flutter_oss_aliyun #
Oss aliyun plugin for flutter. Use sts policy to authenticate the user.
flutter pub: https://pub.dev/packages/flutter_oss_aliyun
oss sts document: https://help.aliyun.com/document_detail/100624.html
Feature #
- upload object
- get object
- save object in files
- delete object
- upload multiple objects at once
- delete multiple objects at once
- progress callback for uploading files
- progress callback for downloading files
- get signed url for file
Usage #
First, add flutter_oss_aliyun
as a dependency in your pubspec.yaml
file.
dependencies:
flutter_oss_aliyun: ^3.1.0
Don't forget to flutter pub get
.
1. init the client, we provide two ways to do it. #
use sts server, just provide the sts url from our backend server:
Client.init(
stsUrl: "server url get sts token",
ossEndpoint: "oss-cn-beijing.aliyuncs.com",
bucketName: "bucket name",
);
This sts url api at least return the data:
{
"AccessKeyId": "AccessKeyId",
"AccessKeySecret": "AccessKeySecret",
"SecurityToken": "SecurityToken",
"Expiration": "2022-03-22T11:33:06Z"
}
you can also customize the way to get sts json response.
Client.init(
ossEndpoint: "oss-cn-beijing.aliyuncs.com",
bucketName: "bucketName",
tokenGetter: _tokenGetterMethod
);
String _tokenGetterMethod() async {
return '''{
"AccessKeyId": "access id",
"AccessKeySecret": "AccessKeySecret",
"SecurityToken": "security token",
"Expiration": "2022-03-22T11:33:06Z"
}''';
}
2. put the object to oss with progress callback #
final bytes = "file bytes".codeUnits;
await Client().putObject(
bytes,
"test.txt",
onSendProgress: (count, total) {
debugPrint("sent = $count, total = $total");
},
onReceiveProgress: (count, total) {
debugPrint("received = $count, total = $total");
}
);
3. get the object from oss with progress callback #
await Client().getObject(
"test.txt",
onReceiveProgress: (count, total) {
debugPrint("received = $count, total = $total");
},
);
4. download the object from oss with progress callback #
await Client().downloadObject(
"test.txt",
"./example/test.txt",
onReceiveProgress: (count, total) {
debugPrint("received = $count, total = $total");
},
);
5. delete the object from oss #
await Client().deleteObject("test.txt");
6. batch put the object to oss #
await Client().putObjects(
[
AssetEntity(filename: "filename1.txt", bytes: "files1".codeUnits),
AssetEntity(filename: "filename2.txt", bytes: "files2".codeUnits),
],
onSendProgress: (count, total) {
debugPrint("sent = $count, total = $total");
},
onReceiveProgress: (count, total) {
debugPrint("received = $count, total = $total");
},
);
7. batch delete the object from oss #
await Client().deleteObjects(["filename1.txt", "filename2.txt"]);