{% import “/js-sdk/macro/total_count.md” as totalCount %}

文件操作

文件上传

FileManager.upload(File file, Map<String, dynamic> metaData)

metaData 参数说明(可选)

参数 类型 必填 说明
categoryID String N 要上传的文件分类 ID
categoryName String N 要上传的文件分类名

info 请勿同时填写 categoryID 和 categoryName,默认只使用 categoryID

返回 CloudFile 对象

参数 类型 说明
id String 文件 id
name String 文件名
size int 文件大小,以字节为单位
category FileCategory 文件归属的目录
path String 上传成功后的访问地址 URL
cdn_path String 文件在 CDN 中的相对路径
created_at int 创建时间 (格式为 unix 时间戳)
mime_type String 文件媒体类型
media_type String 如果是视频/图片,表示文件的格式

示例代码

  1. import 'dart:io';
  2. import 'package:file_picker/file_picker.dart';
  3. try {
  4. Map<String, dynamic> metaData = {
  5. 'categoryID': currentCate,
  6. };
  7. File file = await FilePicker.getFile();
  8. CloudFile cloudFile = await FileManager.upload(file, metaData);
  9. // 操作成功
  10. } catch (e) {
  11. // 操作失败
  12. }

获取文件详情

FileManager.get(String fileID)

参数说明

参数 类型 必填 说明
fileID String Y 文件 id

示例代码

  1. import 'package:minapp/minapp.dart';
  2. try {
  3. CloudFile MyFile = await FileManager.get('5a2fe93308443e313a428c4f');
  4. // 操作成功
  5. } on HError catch(e) {
  6. // 操作失败
  7. }

HError 对象结构请参考错误码和 HError 对象

删除文件

FileManager.delete(fileID)

参数说明

参数 类型 必填 说明
fileID String or List<String> Y 文件 id (可为数组)

示例代码

  1. import 'package:minapp/minapp.dart';
  2. try {
  3. await FileManager.delete('5a2fe93308443e313a428c4f');
  4. await FileManager.delete(['5a2fe93308443e313a428c4c', '5a2fe93308443e313a428c4d']);
  5. // 操作成功
  6. } on HError catch(e) {
  7. // 操作失败
  8. }

info 删除单个文件,如果权限不足,会返回 401;删除多个文件,如果权限不足,则直接跳过该文件

文件列表

查询,获取文件列表

FileManager.find([Query query])

文件查询与数据表查询方法一致,但只支持以下指定字段的筛选

支持字段 类型 说明
id String 文件 id
name String 文件名
size Integer 文件大小,以字节为单位
category_id String 文件分类 id
category_name String 文件分类名
created_at Integer 创建时间 (格式为 unix 时间戳)

示例代码

  1. import 'package:minapp/minapp.dart';
  2. try {
  3. // 查找所有文件
  4. CloudFileList cloudFiles = await FileManager.find();
  5. Query query = new Query();
  6. // 查询某一文件分类下的所有文件
  7. Where where = Where.compare('category_name', '=', categoryName);
  8. // 查询文件名包含指定字符串的文件
  9. Where where = Where.contains('name', substr);
  10. query.where(where);
  11. CloudFileList cloudFiles = await FileManager.find(query);
  12. // 操作成功
  13. } on HError catch (e) {
  14. // 操作失败
  15. }

排序

文件查询排序与数据表排序方法一致,但只支持对以下指定字段进行排序

支持字段 类型 说明
name String 文件名
size Number 文件大小,以字节为单位
created_at Number 文件上传时间

示例代码

  1. import 'package:minapp/minapp.dart';
  2. try {
  3. Query query = Query();
  4. query.orderBy('-created_at');
  5. CloudFileList cloudFiles = await FileManager.find(query);
  6. // 操作成功
  7. } on HError catch(e) {
  8. // 操作失败
  9. }

分页

文件查询排序与数据表分页方法一致

示例代码

  1. import 'package:minapp/minapp.dart';
  2. try {
  3. Query query = Query();
  4. query
  5. ..limit(10)
  6. ..offset(5);
  7. CloudFileList cloudFiles = await FileManager.find(query);
  8. // 操作成功
  9. } on HError catch(e) {
  10. // 操作失败
  11. }

文件分类

获取文件分类

FileManager.getCategory(String cateID)

参数说明

参数 类型 必填 说明
cateID String Y 文件分类 ID

示例代码

  1. import 'package:minapp/minapp.dart';
  2. try {
  3. FileCategory cate = await FileManager.getCategory('5a2fe91508443e3123dbe1cb');
  4. // 操作成功
  5. } on HError catch(e) {
  6. // 操作失败
  7. }

查询指定分类下的文件

FileManager.find([Query query])

示例代码

  1. import 'package:minapp/minapp.dart';
  2. try {
  3. Query query = Query();
  4. Where where = Where.compare('category_id', '=', '5a2fe91508443e3123dbe1cb');
  5. query.where(where);
  6. CloudFileList files = await FileManager.find(query);
  7. // 操作成功
  8. } on HError catch(e) {
  9. // 操作失败
  10. }

参数说明

参数 类型 必填 说明
query Query N 查询条件,详见数据表 - 查询

查询文件分类

FileManager.getCategoryList([Query query])

文件分类查询与数据表查询方法一致,但只支持以下指定字段的筛选:

  1. import 'package:minapp/minapp.dart';
  2. try {
  3. FileCategoryList cates = await FileManager.getCategoryList();
  4. // 操作成功
  5. } on HError catch(e) {
  6. // 操作失败
  7. }

参数说明

参数 类型 必填 说明
query Query N 查询条件,详见数据表 - 查询

图片云处理

利用 CDN 图片云处理,可以快速便捷地完成图片缩放、裁切、打水印等操作,示例如下:

  1. // 缩放图片至 400x400
  2. https://cloud-minapp-7894.cloud.ifanrusercontent.com/1eRuaPvwdleauqyZ.jpg!/both/400x400
  3. // 在图片右下角添加 “知晓云” 文字水印
  4. https://cloud-minapp-7894.cloud.ifanrusercontent.com/1eiuEUuISgOstoVZ.png!/watermark/align/southeast/text/55+l5pmT5LqRCg==

具体用法和更多功能可查看文档:如何通过图片 URL 进行图片云处理?

视频截图

info SDK 版本要求 >= 1.16.0

FileManager.genVideoSnapshot(Map<String, dynamic> params)

params参数说明

参数 类型 必填 说明
source String Y 视频文件的 id
save_as String Y 截图保存的文件名
point String Y 截图时间格式,格式:HH:MM:SS
category_id String N 文件所属类别 ID
random_file_link Boolean N 是否使用随机字符串作为文件的下载地址,不随机可能会覆盖之前的文件,默认为 true
size String N 截图尺寸,格式为 宽 x 高,默认是视频尺寸
format String N 截图格式,可选值为 jpg,png, webp, 默认根据 save_as 的后缀生成

返回参数说明

res:

参数 类型 说明
created_at Integer 创建时间 (格式为 unix 时间戳)
path String 上传成功后的访问地址 URL
created_by Integer 创建者 id
mime_type String mime_type 类型
media_type String 媒体类型
size Integer 文件大小
name String 文件名
status String 文件状态
reference String 引用
cdn_path String 文件在 CDN 中的相对路径
updated_at Integer 更新时间 (格式为 unix 时间戳)
categories String 文件所属类别
_id String 本条记录 ID

示例代码

  1. import 'package:minapp/minapp.dart';
  2. try {
  3. Map<String, dynamic> params = {
  4. "source": "xxxxxxxxxx",
  5. "save_as": "hello.png",
  6. "point": "00:00:10",
  7. "category_id": "5c18bc794e1e8d20dbfcddcc",
  8. "random_file_link": false
  9. };
  10. Map<String, dynamic> cover = await FileManager.genVideoSnapshot(params)
  11. // 操作成功
  12. } on HError catch(e) {
  13. // 操作失败
  14. }

HError 对象结构请参考错误码和 HError 对象

返回示例

  1. {
  2. "created_at": 1547461561,
  3. "path": null,
  4. "created_by_id": 16042162,
  5. "mime_type": "image/png",
  6. "media_type": "image",
  7. "size": 99391,
  8. "name": "1gizRRuY71ZUcSZX.png",
  9. "status": "success",
  10. "reference": "",
  11. "cdn_path": "1gizRRRdklnf7gCD.png",
  12. "updated_at": 1547461561,
  13. "categories": [],
  14. "_id": "5c3c63b9d1606e0b3fc7acb7"
  15. }

M3U8 视频拼接

FileManager.videoConcat(Map<String, dynamic> params)

params参数说明

参数 类型 必填 说明
m3u8s Array Y 视频文件的 id 列表,按提交的顺序进行拼接
save_as String Y 截图保存的文件名
category_id String N 文件所属类别 ID
random_file_link Boolean N 是否使用随机字符串作为文件的下载地址,不随机可能会覆盖之前的文件,默认为 true

返回参数说明

Map res:

参数 类型 说明
created_at Integer 创建时间 (格式为 unix 时间戳)
path String 上传成功后的访问地址 URL
created_by Integer 创建者 id
mime_type String mime_type 类型
media_type String 媒体类型
size Integer 文件大小
name String 文件名
status String 文件状态
reference String 引用
cdn_path String 文件在 CDN 中的相对路径
updated_at Integer 更新时间 (格式为 unix 时间戳)
categories String 文件所属类别
_id String 本条记录 ID

示例代码

  1. import 'package:minapp/minapp.dart';
  2. try {
  3. Map<String, dynamic> params = {
  4. "m3u8s": ["xxxxxxxxxx", "xxxxxxxxxx"],
  5. "save_as": "hello.m3u8",
  6. "category_id": "5c18bc794e1e8d20dbfcddcc",
  7. "random_file_link": false,
  8. };
  9. Map<String, dynamic> result = await FileManager.videoConcat(params);
  10. // 操作成功
  11. } on HError catch (e) {
  12. // 操作失败
  13. }

HError 对象结构请参考错误码和 HError 对象

返回示例

  1. {
  2. "created_at": 1547461561,
  3. "path": null,
  4. "created_by_id": 16042162,
  5. "mime_type": "",
  6. "media_type": "",
  7. "size": "",
  8. "name": "hello.m3u8",
  9. "status": "pengding",
  10. "reference": "",
  11. "cdn_path": "1gizRRRdklnf7gCD.m3u8",
  12. "updated_at": 1547461561,
  13. "categories": [],
  14. "_id": "5c3c63b9d1606e0b3fc7acb7"
  15. }

M3U8 视频剪辑

FileManager.videoClip(Map<String, dynamic> params)

params参数说明

参数 类型 必填 说明
m3u8 String Y 视频文件的 id
save_as String Y 截图保存的文件名
category_id String N 文件所属类别 ID
random_file_link Boolean N 是否使用随机字符串作为文件的下载地址,不随机可能会覆盖之前的文件,默认为 true
include Array N 包含某段内容的开始结束时间,单位是秒。当 index 为 false 时,为开始结束分片序号
exclude Array N 不包含某段内容的开始结束时间,单位是秒。当 index 为 false 时,为开始结束分片序号
index Boolean N include 或者 exclude 中的值是否为 ts 分片序号,默认为 false

返回参数说明

res:

参数 类型 说明
created_at Integer 创建时间 (格式为 unix 时间戳)
path String 上传成功后的访问地址 URL
created_by Integer 创建者 id
mime_type String mime_type 类型
media_type String 媒体类型
size Integer 文件大小
name String 文件名
status String 文件状态
reference String 引用
cdn_path String 文件在 CDN 中的相对路径
updated_at Integer 更新时间 (格式为 unix 时间戳)
categories String 文件所属类别
_id String 本条记录 ID

示例代码

  1. import 'package:minapp/minapp.dart';
  2. try {
  3. Map<String, dynamic> params = {
  4. "m3u8": "xxxxxxxxxx",
  5. "include": [0, 20],
  6. "save_as": "0s_20s.m3u8",
  7. "category_id": "5c18bc794e1e8d20dbfcddcc",
  8. "random_file_link": false
  9. };
  10. Map<String, dynamic> video = await FileManager.videoConcat(params);
  11. // 操作成功
  12. } on HError catch(e) {
  13. // 操作失败
  14. }

HError 对象结构请参考错误码和 HError 对象

返回示例

  1. {
  2. "created_at": 1547461561,
  3. "path": null,
  4. "created_by_id": 16042162,
  5. "mime_type": "",
  6. "media_type": "",
  7. "size": "",
  8. "name": "hello.m3u8",
  9. "status": "pending",
  10. "reference": "",
  11. "cdn_path": "1gizRRRdklnf7gCD.m3u8",
  12. "updated_at": 1547461561,
  13. "categories": [],
  14. "_id": "5c3c63b9d1606e0b3fc7acb7"
  15. }

M3U8 时长和分片信息

FileManager.videoMeta(Map<String, dynamic> params)

params参数说明

参数 类型 必填 说明
m3u8 String Y 视频文件的 id

返回参数说明

res:

参数 类型 说明
status_code Integer 状态码
message String 返回信息
meta Map<String, dynamic> 详见以下

meta 参数说明:

参数 类型 说明
duartion Number m3u8 时长
points List<num> 时间点

示例代码

  1. import 'package:minapp/minapp.dart';
  2. try {
  3. Map<String, dynamic> params = {
  4. "m3u8": "xxxxxxxxxx"
  5. };
  6. Map<String, dynamic> meta = await FileManager.videoMeta(params);
  7. // 操作成功
  8. } on HError catch(e) {
  9. // 操作失败
  10. }

HError 对象结构请参考错误码和 HError 对象

返回示例

  1. {
  2. "status_code": 200,
  3. "message": "ok",
  4. "meta": {
  5. "duration": 2850.2974559999984,
  6. "points": [
  7. 11.277933,
  8. 23.7237,
  9. 34.6346,
  10. 42.008632999999996,
  11. 50.483765999999996,
  12. 64.764699,
  13. 70.80406599999999,
  14. 82.31556599999999,
  15. 92.892799,
  16. 100.200099,
  17. 114.74796599999999,
  18. 123.92379899999999,
  19. 131.09763199999998,
  20. 140.97416499999997,
  21. 158.32483199999996,
  22. 160.05989899999994,
  23. 172.70586599999996,
  24. 181.04753299999996,
  25. 191.79159999999996
  26. ]
  27. }
  28. }

音视频的元信息

FileManager.videoAudioMeta(Map<String, dynamic> params)

params参数说明

参数 类型 必填 说明
source String Y 文件的 id

返回参数说明

res:

参数 类型 说明
format Map 音视频格式信息,详见以下
streams List<Map<String, dynamic>> stream 列表,详见以下

format 参数说明:

参数 类型 说明
bitrate int 比特率
duration num 时长
format String 容器格式
fullname String 容器格式全称

streams 参数说明:

参数 类型 说明
index int 表示第几路流
type String 一般情况下, video 或 audio
bitrate int 流码率
codec String 流编码
codec_desc String 流编码说明
duration num 流时长
video_fps num (视频流)视频帧数
video_height int (视频流)视频高度
video_width int (视频流)视频宽度
audio_channels int (音频流)音频通道数
audio_samplerate int (音频流)音频采样率

示例代码

  1. import 'package:minapp/minapp.dart';
  2. try {
  3. Map<String, dynamic> params = {
  4. "source": "xxxxxxxxxx"
  5. };
  6. FileManager.videoAudioMeta(params);
  7. // 操作成功
  8. } on HError catch(e) {
  9. // 操作失败
  10. }

HError 对象结构请参考错误码和 HError 对象

返回示例

  1. {
  2. "streams": [
  3. {
  4. "index": 0,
  5. "type": "video",
  6. "video_fps": 25,
  7. "video_height": 236,
  8. "video_width": 426,
  9. "codec_desc": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
  10. "codec": "h264",
  11. "bitrate": 99608,
  12. "duration": 184.8,
  13. "metadata": {
  14. "handler_name": "VideoHandler",
  15. "language": "und"
  16. }
  17. },
  18. {
  19. "index": 1,
  20. "type": "audio",
  21. "audio_channels": 2,
  22. "audio_samplerate": 44100,
  23. "codec_desc": "AAC (Advanced Audio Coding)",
  24. "codec": "aac",
  25. "bitrate": 48005,
  26. "duration": 184.855011,
  27. "metadata": {
  28. "handler_name": "SoundHandler",
  29. "language": "und"
  30. }
  31. }
  32. ],
  33. "format": {
  34. "duration": 184.902,
  35. "fullname": "QuickTime / MOV",
  36. "bitrate": 154062,
  37. "filesize": 3560797,
  38. "format": "mov,mp4,m4a,3gp,3g2,mj2"
  39. }
  40. }

数据对象

CloudFile

参数 类型 说明
id String 文件 id
name String 文件名
size int 文件大小,以字节为单位
category FileCategory 文件归属的目录
path String 上传成功后的访问地址 URL
cdn_path String 文件在 CDN 中的相对路径
created_at int 创建时间 (格式为 unix 时间戳)
mime_type String 文件媒体类型
media_type String 如果是视频/图片,表示文件的格式

CloudFileList

参数 类型 说明
limit int 返回文件的最大个数
offset int 返回文件的起始偏移值
total_count int 文件总数
next String 下一页地址,若为 null ,表示当前为最后一页
previous String 上一页地址,若为 null ,表示当前为第一页
files List<CloudFile> 文件列表,每个元素为 CloudFile 类型

FileCategory

参数 类型 说明
id String 分类 id
name String 分类名称
files int 文件数量
created_at int 创建时间 (格式为 unix 时间戳)
updated_at int 更新日期 (格式为 unix 时间戳)

FileCategoryList

参数 类型 说明
limit int 返回文件的最大个数
offset int 返回文件的起始偏移值
total_count int 文件总数
next String 下一页地址,若为 null ,表示当前为最后一页
previous String 上一页地址,若为 null ,表示当前为第一页
fileCategories List<FileCategory> 分类列表,每个元素为 FileCategory 类型