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
x
upload objectx
get objectx
save object in filesx
delete objectx
upload multiple objects at oncex
delete multiple objects at oncex
progress callback for uploading filesx
progress callback for downloading filesx
get signed url for filex
get multiple signed urls for files
Usage
First, add flutter_oss_aliyun
as a dependency in your pubspec.yaml
file.
dependencies:
flutter_oss_aliyun: ^3.1.3
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"]);
8. get signed url that can be accessed in browser directly
This is not safe
due to the url include the security-token information even it will expire in short time. Use it carefully!!!
final String url = await Client().getSignedUrl("filename1.txt");
9. get multiple signed urls
This is not safe
due to the url include the security-token information even it will expire in short time. Use it carefully!!!
final Map<String, String> result = await Client().getSignedUrls(["test.txt", "filename1.txt"]);
Drop a ⭐ if it is help to you.
Libraries
- flutter_oss_aliyun
- Flutter widgets that make it easy to access aliyun oss.