文件操作

实例化一个 BaaS.File 对象,以下操作都是在该对象上进行操作,如下进行实例化:

let MyFile = new BaaS.File()

上传文件

MyFile.upload(uploadFile, fileMeta)

参数说明

参数类型必填说明默认值
uploadFileString or BufferY需要上传的文件
fileMetaObjectN文件 meta 信息,如文件名,分类 ID 等FileMeta对象

FileMeta对象说明

字段名类型必填说明默认值
category_idStringN文件分类 ID''
random_file_linkBooleanN是否使用随机的文件存储路径,值为 false 则使用 filename 作为文件存储路径,详见下文举例说明true
filenameStringN文件名file.bin
filepathStringN文件路径/tmp/file.bin
contentTypeStringN文件 MIME 类型application/octet-stream

random_file_link 举例说明:

fileMeta.random_file_linktrue 时,如果 fileMeta.filenameavatar.png,则返回值中 res.data.file.path 为 https://cloud-minapp-xxx.cloud.ifanrusercontent.com/1j6ZGvnzSpJ7YBZ8.png

fileMeta.random_file_linkfalse 时,如果 fileMeta.filenameavatar.png,则返回值中 res.data.file.path 为 https://cloud-minapp-xxx.cloud.ifanrusercontent.com/avatar.png

示例代码

  1. let MyFile = new BaaS.File()
  2. // 指定文件名上传
  3. MyFile.upload('/var/log/test.log').then()
  4. // 使用 Buffer 构建文件内容
  5. MyFile.upload(Buffer.from('this is file content'), {filename: 'test.txt'}).then()
  6. // 上传到指定目录
  7. MyFile.upload('/var/log/test.log', {category_id: 1}).then()

返回参数说明

res.data:

参数类型说明
pathString上传后的文件地址
fileObject包含文件详细信息,详见以下

file 参数说明:

参数类型说明
pathString上传后的文件地址
cdn_pathString文件在 cdn 上的路径
created_atString文件上传时间
idObject文件 ID
mime_typeString文件媒体类型
nameString文件名
sizeNumber以字节为单位

获取文件详情

MyFile.get(fileID)

参数说明

参数类型必填说明
fileIDStringY文件 id

返回参数说明

res.data:

参数类型说明
categoryObject包含文件分类信息,详见以下
created_atString文件上传时间
idObject文件 ID
mime_typeString文件媒体类型
nameString文件名
pathString文件路径
sizeNumber以字节为单位

category 参数说明:

参数类型说明
idString分类 ID
nameString分类名

示例代码

  1. let MyFile = new BaaS.File()
  2. MyFile.get('5a2fe93308443e313a428c4f').then(res => {
  3. // success
  4. }, err => {
  5. // err
  6. })

返回示例

  1. {
  2. "category": {
  3. "id": "5a2fe91508443e3123dbe1cb",
  4. "name": "科技"
  5. },
  6. "created_at": 1507822469,
  7. "id": "5a2fe93308443e313a428c4f",
  8. "mime_type": "text/plain; charset=utf-8",
  9. "name": "tmp_262601706o6zAJs-pmaywKzqHIvzwU97rtiGIe4dd39171563993cf10b12bae2ac30ec.svg",
  10. "path": "https://baas-hello-world.cloud.ifanrusercontent.com/1fQTn8UCwQYlGFrv.txt",
  11. "size": 3879
  12. }

删除文件

MyFile.delete(fileID)

参数说明

参数类型必填说明
fileIDString or String ArrayY文件 id (可为数组)

示例代码

  1. let MyFile = new BaaS.File()
  2. MyFile.delete('5a2fe93308443e313a428c4f').then()
  3. MyFile.delete(['5a2fe93308443e313a428c4c', '5a2fe93308443e313a428c4d']).then()

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

获取符合条件的文件总数

BaaS.File#count()

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

支持字段类型说明
idString文件 id
nameString文件名
sizeNumber文件大小,以字节为单位
category_idString文件分类 id
category_nameString文件分类名
created_atInteger创建时间 (格式为 unix 时间戳)
  1. let MyFile = new BaaS.File()
  2. let query = new BaaS.Query()
  3. query.compare('category_name', '=', categoryName)
  4. query.contains('name', substr)
  5. let num = await MyFile.setQuery(query).count()
  6. console.log(num) // 10
  1. let MyFile = new BaaS.File()
  2. let query = new BaaS.Query()
  3. query.compare('category_name', '=', categoryName)
  4. query.contains('name', substr)
  5. MyFile.setQuery(query).count().then(num => {
  6. // success
  7. console.log(num) // 10
  8. callback(null, res)
  9. }, err => {
  10. // err
  11. callback(err)
  12. })

查询,获取文件列表

BaaS.File#find(options)

参数说明

options:

参数类型必填默认说明
withCountbooleantrue是否返回 total_count

withCount 设为 false,接口返回的数据中不包含 total_count,当数据条目多时,可通过不返回 total_count 提高响应速度。如果需要查询记录的总数,请使用 count 方法。

SDK v2.x withCount 的默认值为 true,SDK v3+ withCount 的默认值为 false

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

支持字段类型说明
idString文件 id
nameString文件名
sizeNumber文件大小,以字节为单位
category_idString文件分类 id
category_nameString文件分类名
created_atInteger创建时间 (格式为 unix 时间戳)

示例代码

  1. let MyFile = new BaaS.File()
  2. // 查找所有文件
  3. MyFile.find()
  4. let query = new BaaS.Query()
  5. // 查询某一文件分类下的所有文件
  6. query.compare('category_name', '=', categoryName)
  7. // 查询文件名包含指定字符串的文件
  8. query.contains('name', substr)
  9. MyFile.setQuery(query).find()
  1. let MyFile = new BaaS.File()
  2. // 查找所有文件
  3. MyFile.find()
  4. // 按创建时间范围查询: 2018年10月24日17时10分57秒 至今上传的文件
  5. let query = BaaS.Query.and(new BaaS.Query().compare('created_at', '<=', Math.ceil(Date.now() / 1000)), new BaaS.Query().compare('created_at', '>=', 1540372257)),
  6. MyFile.setQuery(query).find()

排序

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

支持字段类型说明
nameString文件名
sizeNumber文件大小,以字节为单位
created_atNumber文件上传时间

示例代码

  1. let MyFile = new BaaS.File()
  2. MyFile.orderBy('-created_at').find().then()

分页

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

视频截图

MyFile.genVideoSnapshot(params)

params参数说明

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

返回参数说明

res.data:

参数类型说明
created_atInteger创建时间 (格式为 unix 时间戳)
pathString文件的 URL 路径
created_byInteger创建者 id
mime_typeStringmime_type 类型
media_typeString媒体类型
sizeInteger文件大小
nameString文件名
statusString文件状态
referenceString引用
cdn_pathStringcdn 中保存的路径
updated_atInteger更新时间 (格式为 unix 时间戳)
categoriesString文件所属类别
idString本条记录 ID

示例代码

  1. let MyFile = new BaaS.File()
  2. let params = {
  3. "source": "asjgernaskasdewk",
  4. "save_as": "hello.png",
  5. "point": "00:00:10",
  6. "category_id": "5c18bc794e1e8d20dbfcddcc",
  7. "random_file_link": false
  8. }
  9. MyFile.genVideoSnapshot(params).then((res) => {
  10. // success
  11. }, err => {
  12. // HError 对象
  13. })

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 视频拼接

MyFile.videoConcat(params)

params参数说明

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

返回参数说明

res.data:

参数类型说明
created_atInteger创建时间 (格式为 unix 时间戳)
pathString路径
created_byInteger创建者 id
mime_typeStringmime_type 类型
media_typeString媒体类型
sizeInteger文件大小
nameString文件名
statusString文件状态
referenceString引用
cdn_pathStringcdn 中保存的路径
updated_atInteger更新时间 (格式为 unix 时间戳)
categoriesString文件所属类别
_idString本条记录 ID

示例代码

  1. let MyFile = new BaaS.File()
  2. let params = {
  3. "m3u8s": ["xxxxxxxxxxx", "xxxxxxxxxxx"],
  4. "save_as": "hello.m3u8",
  5. "category_id": "5c18bc794e1e8d20dbfcddcc",
  6. "random_file_link": false,
  7. }
  8. MyFile.videoConcat(params).then((res) => {
  9. // success
  10. }, err => {
  11. // HError 对象
  12. })

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 视频剪辑

MyFile.videoClip(params)

params参数说明

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

返回参数说明

res.data:

参数类型说明
created_atInteger创建时间 (格式为 unix 时间戳)
pathString路径
created_byInteger创建者 id
mime_typeStringmime_type 类型
media_typeString媒体类型
sizeInteger文件大小
nameString文件名
statusString文件状态
referenceString引用
cdn_pathStringcdn 中保存的路径
updated_atInteger更新时间 (格式为 unix 时间戳)
categoriesString文件所属类别
_idString本条记录 ID

示例代码

  1. let MyFile = new BaaS.File()
  2. let params = {
  3. "m3u8": "xxxxxxxxxxx",
  4. "include": [0, 20],
  5. "save_as": "0s_20s.m3u8",
  6. "category_id": "5c18bc794e1e8d20dbfcddcc",
  7. "random_file_link": false
  8. }
  9. MyFile.videoClip(params).then((res) => {
  10. // success
  11. }, err => {
  12. // HError 对象
  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": "pending",
  10. "reference": "",
  11. "cdn_path": "1gizRRRdklnf7gCD.m3u8",
  12. "updated_at": 1547461561,
  13. "categories": [],
  14. "_id": "5c3c63b9d1606e0b3fc7acb7"
  15. }

M3U8 时长和分片信息

MyFile.videoMeta(params)

params参数说明

参数类型必填说明
m3u8StringY视频文件的 id

返回参数说明

res.data:

参数类型说明
status_codeInteger状态码
messageString返回信息
metaObject详见以下

meta 参数说明:

参数类型说明
duartionNumberm3u8 时长
pointsArray时间点

示例代码

  1. let MyFile = new BaaS.File()
  2. let params = {
  3. "m3u8": "xxxxxxxxxxx"
  4. }
  5. MyFile.videoMeta(params).then((res) => {
  6. // success
  7. }, err => {
  8. // HError 对象
  9. })

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. }

音视频的元信息

MyFile.videoAudioMeta(params)

params参数说明

参数类型必填说明
sourceStringY文件的 id

返回参数说明

res.data:

参数类型说明
formatObject音视频格式信息,详见以下
streamsArraystream 列表,详见以下

format 参数说明:

参数类型说明
bitrateInteger比特率
durationNumber时长
formatString容器格式
fullnameString容器格式全称

streams 参数说明:

参数类型说明
indexInteger表示第几路流
typeString一般情况下, video 或 audio
bitrateInteger流码率
codecString流编码
codec_descString流编码说明
durationNumber流时长
video_fpsNumber(视频流)视频帧数
video_heightInteger(视频流)视频高度
video_widthInteger(视频流)视频宽度
audio_channelsInteger(音频流)音频通道数
audio_samplerateInteger(音频流)音频采样率

示例代码

  1. let MyFile = new BaaS.File()
  2. let params = {
  3. "source": "xxxxxxxxxxx"
  4. }
  5. MyFile.videoAudioMeta(params).then((res) => {
  6. // success
  7. }, err => {
  8. // HError 对象
  9. })

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. }

刷新 CDN 缓存

MyFile.purgeCache(operationType, content)

参数说明

参数类型必填说明
operationTypeStringY操作类型,包括:exact(URL 刷新)、path_prefix(目录刷新)
contentArrayY操作的 URL 列表

示例代码

  1. let MyFile = new BaaS.File()
  2. MyFile.purgeCache('exact', ['https://***']).then((res) => {
  3. // success
  4. }, err => {
  5. // HError 对象
  6. })

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

返回示例

  1. {
  2. "status": "ok"
  3. }

获取 CDN 缓存刷新操作记录

MyFile.getPurgeCacheHistory(params)

params 参数说明

参数类型必填说明
params.limitNumberN数量限制
params.offsetNumberN偏移量
params.operationTypeStringN操作类型,包括:exact(URL 刷新)、path_prefix(目录刷新)
params.created_atgteNumberN创建时间区间的开始时间(时间戳)
params.created_atlteNumberN创建时间区间的结束时间(时间戳)

示例代码

  1. let MyFile = new BaaS.File()
  2. let params = {
  3. offset: 0,
  4. limit: 10,
  5. operationType: 'exact',
  6. created_at__gte: 1548744906,
  7. created_at__lte: 1548917706,
  8. }
  9. MyFile.getPurgeCacheHistory(params).then((res) => {
  10. // success
  11. }, err => {
  12. // HError 对象
  13. })

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

返回示例

  1. {
  2. "meta": {
  3. "limit": 10,
  4. "next": null,
  5. "offset": 0,
  6. "previous": null,
  7. "total_count": 1
  8. },
  9. "objects": [
  10. {
  11. "content": "https://***",
  12. "created_at": 1548830917,
  13. "error_message": null,
  14. "id": "5c5148c57032fce4f73e6ef6",
  15. "operation_type": "exact",
  16. "status": "in_progress",
  17. "updated_at": 1548830917
  18. }
  19. ]
  20. }