文件存储
#
CloudBaseStorage#
CloudBaseStorage.uploadFile#
1. 接口描述接口功能:上传文件到文件管理服务
接口声明:Future<void> uploadFile({String cloudPath, String filePath}) async {}
#
2. 输入参数字段 | 类型 | 必填 | 说明 |
---|---|---|---|
cloudPath | String | 是 | 云端文件的路径 |
filePath | String | 是 | 本地文件的路径,需要为能直接访问的路径 |
onProcess | (int count, int total) => void | 否 | 上传文件进度 |
#
3. 输出参数字段 | 类型 | 必填 | 说明 |
---|---|---|---|
code | string | 否 | 状态码,操作成功则不返回 |
message | string | 否 | 错误描述 |
data | Map | 否 | 删除结果组成的数组 |
requestId | string | 否 | 请求序列号,用于错误排查 |
#
data字段 | 类型 | 必填 | 说明 |
---|---|---|---|
fileID | string | 是 | 文件 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. 输入参数字段 | 类型 | 必填 | 说明 |
---|---|---|---|
fileId | String | 是 | 需要下载的文件 id |
savePath | String | 是 | 保存文件的本地路径 |
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. 输入参数字段 | 类型 | 必填 | 说明 |
---|---|---|---|
fileIdList | List<String> | 是 | 要删除的文件 Id 组成的数组 |
#
3. 输出参数字段 | 类型 | 必填 | 说明 |
---|---|---|---|
code | string | 否 | 状态码,操作成功则不返回 |
message | string | 否 | 错误描述 |
data | List<dynamic> | 否 | 删除结果组成的数组 |
requestId | string | 否 | 请求序列号,用于错误排查 |
#
data字段 | 类型 | 必填 | 说明 |
---|---|---|---|
code | string | 否 | 删除结果,成功为 SUCCESS |
fileID | string | 是 | 文件 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. 输入参数字段 | 类型 | 必填 | 说明 |
---|---|---|---|
fileList | List<String> | 是 | 要下载的文件 ID 组成的数组 |
#
3. 输出参数字段 | 类型 | 必填 | 说明 |
---|---|---|---|
code | String | 否 | 状态码,操作成功则为 SUCCESS |
message | String | 否 | 错误描述 |
data | List<dynamic> | 否 | 存储下载链接的数组 |
requestId | String | 否 | 请求序列号,用于错误排查 |
#
data字段 | 类型 | 必填 | 说明 |
---|---|---|---|
code | string | 否 | 删除结果,成功为 SUCCESS |
message | string | 否 | 错误描述 |
fileId | string | 是 | 文件 ID |
downloadUrl | string | 是 | 文件访问链接 |
#
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. 输入参数字段 | 类型 | 必填 | 说明 |
---|---|---|---|
cloudPath | List<String> | 是 | 云端文件路径 |
#
3. 输出参数字段 | 类型 | 必填 | 说明 |
---|---|---|---|
code | String | 否 | 状态码,操作成功则为 SUCCESS |
message | String | 否 | 错误描述 |
data | List<dynamic> | 否 | 存储上传文件属性的数组 |
requestId | String | 否 | 请求序列号,用于错误排查 |
#
data字段 | 类型 | 必填 | 说明 |
---|---|---|---|
code | string | 否 | 删除结果,成功为 SUCCESS |
message | string | 否 | 错误描述 |
url | string | 是 | 上传文件的 url |
token | string | 是 | 访问 token |
authorization | string | 是 | 访问授权信息 |
cosFileId | string | 是 | 文件 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);}