跳到主要内容

文件存储

CloudBaseStorage#

CloudBaseStorage.uploadFile#

1. 接口描述#

接口功能:上传文件到文件管理服务

接口声明:Future<void> uploadFile({String cloudPath, String filePath}) async {}

2. 输入参数#

字段类型必填说明
cloudPathString云端文件的路径
filePathString本地文件的路径,需要为能直接访问的路径
onProcess(int count, int total) => void上传文件进度

3. 输出参数#

字段类型必填说明
codestring状态码,操作成功则不返回
messagestring错误描述
dataMap删除结果组成的数组
requestIdstring请求序列号,用于错误排查

data#

字段类型必填说明
fileIDstring文件 ID

4. 示例代码#

import 'package:cloudbase_core/cloudbase_core.dart';import 'package:cloudbase_auth/cloudbase_auth.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({    'env': 'your-env-id',    'appAccess': {      'key': 'your-app-access-key',      'version': 'your-app-access-version'    }  });  CloudBaseStorage storage = CloudBaseStorage(core);  // 匿名登录  CloudBaseAuth auth = CloudBaseAuth(core);  CloudBaseAuthState authState = await auth.getAuthState();
  if (authState == null) {      await auth.signInAnonymously();  }
  String path = await _getDocumentsPath();
  await storage.uploadFile(    cloudPath: 'flutter/data.txt',    filePath: '$path/data.txt',    onProcess: (int count, int total) {      // 当前进度      print(count);      // 总进度      print(total);    }  );}

CloudBaseStorage.downloadFile#

1. 接口描述#

接口功能:从云端下载文件

接口声明:Future<void> downloadFile({String fileId, String savePath}) async {}

2. 输入参数#

字段类型必填说明
fileIdString需要下载的文件 id
savePathString保存文件的本地路径
onProcess(int count, int total) => void下载文件进度

3. 输出参数#

下载文件成功时,downloadFile 接口会返回空,失败时则会抛出错误。

4. 示例代码#

import 'package:cloudbase_core/cloudbase_core.dart';import 'package:cloudbase_auth/cloudbase_auth.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({    'env': 'your-env-id',    'appAccess': {      'key': 'your-app-access-key',      'version': 'your-app-access-version'    }  });  CloudBaseStorage storage = CloudBaseStorage(core);  // 匿名登录  CloudBaseAuth auth = CloudBaseAuth(core);  CloudBaseAuthState authState = await auth.getAuthState();
  if (authState == null) {      await auth.signInAnonymously();  }
  // 下载文件  String fileId = 'cloud://xxxx';  await storage.downloadFile(    fileId: fileId,    savePath: savePath,    onProcess: (int count, int total) {      // 当前进度      print(count);      // 总进度      print(total);    }  );}

CloudBaseStorage.deleteFiles#

1. 接口描述#

接口功能:删除云端文件

接口声明:Future<CloudBaseStorageRes<List<DeleteMetadata>>> deleteFiles(List<String> fileIdList) async {}

2. 输入参数#

字段类型必填说明
fileIdListList<String>要删除的文件 Id 组成的数组

3. 输出参数#

字段类型必填说明
codestring状态码,操作成功则不返回
messagestring错误描述
dataList<dynamic>删除结果组成的数组
requestIdstring请求序列号,用于错误排查

data#

字段类型必填说明
codestring删除结果,成功为 SUCCESS
fileIDstring文件 ID

4. 示例代码#

import 'package:cloudbase_core/cloudbase_core.dart';import 'package:cloudbase_auth/cloudbase_auth.dart';import 'package:cloudbase_storage/cloudbase_storage.dart';
void main async {  CloudBaseCore core = CloudBaseCore.init({    'env': 'your-env-id',    'appAccess': {      'key': 'your-app-access-key',      'version': 'your-app-access-version'    }  });  CloudBaseStorage storage = CloudBaseStorage(core);  // 匿名登录  CloudBaseAuth auth = CloudBaseAuth(core);  CloudBaseAuthState authState = await auth.getAuthState();
  if (authState == null) {      await auth.signInAnonymously();  }
  String fileId = 'cloud://xxx';  CloudBaseStorageRes<List<DeleteMetadata>> res = await storage.deleteFiles([fileId]);  print(res.data[0]); // {'fileId': 'xxx', 'code': 'SUCCESS'}}

CloudBaseStorage.getFileDownloadURL#

1. 接口描述#

接口功能:获取文件下载链接,可以自定义实现下载文件的方法。

接口声明:Future<CloudBaseStorageRes<List<DownloadMetadata>>> getFileDownloadURL(List<String> fileIdList) async {}

2. 输入参数#

字段类型必填说明
fileListList<String>要下载的文件 ID 组成的数组

3. 输出参数#

字段类型必填说明
codeString状态码,操作成功则为 SUCCESS
messageString错误描述
dataList<dynamic>存储下载链接的数组
requestIdString请求序列号,用于错误排查
data#
字段类型必填说明
codestring删除结果,成功为 SUCCESS
messagestring错误描述
fileIdstring文件 ID
downloadUrlstring文件访问链接

4. 示例代码#

import 'package:cloudbase_core/cloudbase_core.dart';import 'package:cloudbase_auth/cloudbase_auth.dart';import 'package:cloudbase_storage/cloudbase_storage.dart';
void main() async{  CloudBaseCore core = CloudBaseCore.init({    'env': 'your-env-id',    'appAccess': {      'key': 'your-app-access-key',      'version': 'your-app-access-version'    }  });  CloudBaseStorage storage = CloudBaseStorage(core);
  // 匿名登录  CloudBaseAuth auth = CloudBaseAuth(core);  CloudBaseAuthState authState = await auth.getAuthState();
  if (authState == null) {      await auth.signInAnonymously();  }
  List<String> fileIds = [    'cloud://xxxx'  ];  CloudBaseStorageRes<List<DownloadMetadata>> res res = await storage.getFileDownloadURL(fileIds);  print(res.data[0]); // {'fileId': 'xxx', 'downloadUrl': 'https://xxx'}}

CloudBaseStorage.getUploadMetadata#

1. 接口描述#

接口功能:获取上传文件需要的属性,可用于实现自定义上传文件的逻辑。

接口声明:Future<CloudBaseStorageRes<UploadMetadata>> getUploadMetadata(String cloudPath) async{}

2. 输入参数#

字段类型必填说明
cloudPathList<String>云端文件路径

3. 输出参数#

字段类型必填说明
codeString状态码,操作成功则为 SUCCESS
messageString错误描述
dataList<dynamic>存储上传文件属性的数组
requestIdString请求序列号,用于错误排查
data#
字段类型必填说明
codestring删除结果,成功为 SUCCESS
messagestring错误描述
urlstring上传文件的 url
tokenstring访问 token
authorizationstring访问授权信息
cosFileIdstring文件 id

4. 示例代码#

import 'package:cloudbase_core/cloudbase_core.dart';import 'package:cloudbase_auth/cloudbase_auth.dart';import 'package:cloudbase_storage/cloudbase_storage.dart';
void main() async {  CloudBaseCore core = CloudBaseCore.init({    'env': 'your-env-id',    'appAccess': {      'key': 'your-app-access-key',      'version': 'your-app-access-version'    }  });  CloudBaseStorage storage = CloudBaseStorage(core);  // 匿名登录  CloudBaseAuth auth = CloudBaseAuth(core);  CloudBaseAuthState authState = await auth.getAuthState();
  if (authState == null) {      await auth.signInAnonymously();  }
  CloudBaseStorageRes<UploadMetadata>> res = await storage.getUploadMetadata('test/index.txt');  print(res.data);}