cloudbase_storage 0.0.1 cloudbase_storage: ^0.0.1 copied to clipboard
Flutter plugin for cloudbase storage.
cloudbase_storage #
cloudbase_storage
是 CloudBase Flutter SDK plugin 之一,提供了在 Flutter 项目中操作 CloudBase 文件存储的能力。
安装 #
在使用 cloudbase_storage
时,你也需要安装 cloudbase_core
等模块
在 flutter 项目的 pubspec.yaml
文件的 dependencies
中添加
dependencies:
cloudbase_core: ^0.0.1
cloudbase_storage: ^0.0.1
简单示例 #
import 'package:cloudbase_core/cloudbase_core.dart';
import 'package:cloudbase_storage/cloudbase_storage.dart';
void main() async {
CloudBaseCore core = CloudBaseCore.init({'envId': 'xxx'});
// 微信登录
CloudBaseAuth auth = CloudBaseWxAuth(core);
bool isLogin = await auth.isLogin();
if (!isLogin) {
await auth.login();
}
CloudBaseStorage storage = CloudBaseStorage(core);
String fileId = 'cloud://xxxxx/flutter/data.txt';
String savePath = 'xxxx';
await storage.downloadFile(fileId, savePath);
}
API #
上传文件 #
Future<void> uploadFile({String cloudPath, String filePath}) async {}
参数说明:
- cloudPath:云端文件的路径
- filePath:本地文件的路径,需要为能直接访问的路径
响应结果:void
上传文件成功时,uploadFile
接口会返回空,失败时则会抛出错误。
调用示例
import 'package:cloudbase_core/cloudbase_core.dart';
import 'package:cloudbase_storage/cloudbase_storage.dart';
import 'package:path_provider/path_provider.dart';
// 获取 flutter Document 路径
// 参考文档:https://flutter.cn/docs/cookbook/persistence/reading-writing-files
_getDocumentsPath() async {
final directory = await getApplicationDocumentsDirectory();
String path = directory.path;
return path;
}
void main() async {
CloudBaseCore core = CloudBaseCore.init({'envId': 'xxxx'});
CloudBaseStorage storage = CloudBaseStorage(core);
// 微信登录
CloudBaseAuth auth = CloudBaseWxAuth(core);
bool isLogin = await auth.isLogin();
if (!isLogin) {
await auth.login();
}
String path = await _getDocumentsPath();
await storage.uploadFile(
cloudPath: 'flutter/data.txt', filePath: '$path/data.txt');
}
下载文件 #
Future<void> downloadFile({String fileId, String savePath}) async {}
参数说明
- fileId:需要下载的文件 id
- savePath:保存文件的本地路径
响应:void
调用示例
import 'package:cloudbase_core/cloudbase_core.dart';
import 'package:cloudbase_storage/cloudbase_storage.dart';
import 'package:path_provider/path_provider.dart';
void main async {
// _getDocumentsPath() 同上
String docPath = await _getDocumentsPath();
// 本地存储文件的路径
String savePath = '$docPath/favicon.png';
// 初始化实例
CloudBaseCore core = CloudBaseCore.init({'envId': 'xxx'});
CloudBaseStorage storage = CloudBaseStorage(core);
// 微信登录
CloudBaseAuth auth = CloudBaseWxAuth(core);
bool isLogin = await auth.isLogin();
if (!isLogin) {
await auth.login();
}
// 下载文件
String fileId = 'cloud://xxxx';
await storage.downloadFile(fileId: fileId, savePath: savePath);
}
删除云端文件 #
Future<CloudBaseStorageRes<List<DeleteMetadata>>> deleteFiles(List<String> fileIdList) async {}
参数说明
- fileIdList:需要删除的文件 Id 组成的数组
响应结果
{
// 请求 Id
'requestId': 'xx',
// 被调函数的返回结果
'data': [
{
'fileId': 'xxx',
'code': 'SUCCESS'
}
]
}
调用示例
import 'package:cloudbase_core/cloudbase_core.dart';
import 'package:cloudbase_storage/cloudbase_storage.dart';
void main async {
CloudBaseCore core = CloudBaseCore.init({'envId': 'xxx'});
CloudBaseStorage storage = CloudBaseStorage(core);
// 微信登录
CloudBaseAuth auth = CloudBaseWxAuth(core);
bool isLogin = await auth.isLogin();
if (!isLogin) {
await auth.login();
}
String fileId = 'cloud://xxx';
CloudBaseStorageRes<List<DeleteMetadata>> res = await storage.deleteFiles([fileId]);
print(res.data[0]); // {'fileId': 'xxx', 'code': 'SUCCESS'}
}
获取文件下载链接 #
Future<CloudBaseStorageRes<List<DownloadMetadata>>> getFileDownloadURL(List<String> fileIdList) async {}
获取文件下载链接,可以自定义实现下载文件的方法。
参数说明
- fileIdList:需要删除的文件 Id 组成的数组
响应结果
{
// 请求 Id
'requestId': 'xx',
// 被调函数的返回结果
'data': [
{
'fileId': 'xxx',
'downloadUrl': 'https://xxx'
}
]
}
调用示例
import 'package:cloudbase_core/cloudbase_core.dart';
import 'package:cloudbase_storage/cloudbase_storage.dart';
void main() async{
CloudBaseCore core = CloudBaseCore.init({'envId': 'xxxx'});
CloudBaseStorage storage = CloudBaseStorage(core);
// 微信登录
CloudBaseAuth auth = CloudBaseWxAuth(core);
bool isLogin = await auth.isLogin();
if (!isLogin) {
await auth.login();
}
List<String> fileIds = [
'cloud://xxxx'
];
CloudBaseStorageRes<List<DeleteMetadata>> res res = await storage.getFileDownloadURL(fileIds);
print(res.data[0]); // {'fileId': 'xxx', 'downloadUrl': 'https://xxx'}
}
获取上传文件自定义属性 #
Future<CloudBaseStorageRes<UploadMetadata>> getUploadMetadata(String cloudPath) async{}
getUploadMetadata
方法可以获取上传文件需要的属性,可用于实现自定义上传文件的逻辑。
参数说明
- cloudPath:云端文件路径
响应结果
{
// 请求 Id
'requestId': 'xx',
// 被调函数的返回结果
'data': {
// 上传文件的 url
url: 'xxxx',
// 访问 token
token: '',
// 访问授权信息
authorization: '',
// 文件 id
cosFileId: ''
}
}
调用示例
import 'package:cloudbase_core/cloudbase_core.dart';
import 'package:cloudbase_storage/cloudbase_storage.dart';
void main() async {
CloudBaseCore core = CloudBaseCore.init({'envId': 'xxxx'});
CloudBaseStorage storage = CloudBaseStorage(core);
// 微信登录
CloudBaseAuth auth = CloudBaseWxAuth(core);
bool isLogin = await auth.isLogin();
if (!isLogin) {
await auth.login();
}
CloudBaseStorageRes<UploadMetadata>> res = await storage.getUploadMetadata('test/index.txt');
print(res.data);
}