文件操作

{% tabs first=”SDK 1.1.2 及以上版本”, second=”SDK 1.1.2 以下版本” %}

{% content “first” %}

SDK 1.1.2 及以上版本

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

let MyFile = new wx.BaaS.File()

文件上传

MyFile.upload(fileParams, metaData)

fileParams 参数说明(必须)

参数 类型 必填 说明
filePath String Y 本地资源路径

metaData 参数说明(可选)

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

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

返回参数说明

res.data:

参数 类型 说明
status String 成功返回 ‘ok’
path String 上传后的文件地址
file Object 包含文件详细信息,详见以下

file 参数说明:

参数 类型 说明
cdn_path String 文件在 cdn 上的路径
created_at String 文件上传时间
id Object 文件 ID
mime_type String 文件媒体类型
name String 文件名
size Number 以字节为单位

示例代码

  1. wx.chooseImage({
  2. success: function(res) {
  3. let MyFile = new wx.BaaS.File()
  4. let fileParams = {filePath: res.tempFilePaths[0]}
  5. let metaData = {categoryName: 'SDK'}
  6. MyFile.upload(fileParams, metaData).then(res => {
  7. /*
  8. * 注: 只要是服务器有响应的情况都会进入 success, 即便是 4xx,5xx 都会进入这里
  9. * 如果上传成功则会返回资源远程地址,如果上传失败则会返回失败信息
  10. */
  11. let data = res.data // res.data 为 Object 类型
  12. }, err => {
  13. })
  14. }
  15. })

danger
使用 wx.uploadFile 以及 SDK v.1.1.2 之前版本的 wx.BaaS.uploadFile 返回的 res.data 是 json string 类型,而这里的 res.data 是 Object 类型,因此不需要再做类型转换了

返回示例

  1. {
  2. status: "ok",
  3. path: "https://cloud-minapp-1131.cloud.ifanrusercontent.com/1e2fVFaWoaoAZPyr.svg",
  4. file: {
  5. cdn_path: "1e2fVFaWoaoAZPyr.svg",
  6. created_at: 1507822469,
  7. id: "59df8b852ab80e3656cf8783",
  8. mime_type: "text/plain; charset=utf-8",
  9. name: "tmp_262601706o6zAJs-pmaywKzqHIvzwU97rtiGIe4dd39171563993cf10b12bae2ac30ec.svg",
  10. size: 3879
  11. }
  12. }

info
file 字段可用于含有 file 类型的数据表的数据操作,详细见 新增数据项

获取文件详情

MyFile.get(fileID)

参数说明

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

返回参数说明

res.data:

参数 类型 说明
category Object 包含文件分类信息,详见以下
cdn_path String 文件在 cdn 上的路径
created_at String 文件上传时间
id Object 文件 ID
mime_type String 文件媒体类型
name String 文件名
size Number 以字节为单位

category 参数说明:

参数 类型 说明
id Number 分类 ID
name String 分类名

示例代码

  1. let MyFile = new wx.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. cdn_path: "1e2fVFaWoaoAZPyr.svg",
  7. created_at: 1507822469,
  8. id: "5a2fe93308443e313a428c4f",
  9. mime_type: "text/plain; charset=utf-8",
  10. name: "tmp_262601706o6zAJs-pmaywKzqHIvzwU97rtiGIe4dd39171563993cf10b12bae2ac30ec.svg",
  11. size: 3879
  12. }

删除文件

MyFile.delete(fileID)

参数说明

参数 类型 必填 说明
fileID Number or Number Array Y 文件 id (可为数组)

示例代码

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

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

查询,获取文件列表

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

支持字段 类型 说明
id String 文件 id
name String 文件名
size Number 文件大小,以字节为单位
category_id String 文件分类 id
category_name String 文件分类名

示例代码

  1. let MyFile = new wx.BaaS.File()
  2. // 查找所有文件
  3. MyFile.find()
  4. let query = new wx.BaaS.Query()
  5. // 查询某一文件分类下的所有文件
  6. query.compare('category_name', '=', categoryName)
  7. // 查询文件名包含指定字符串的文件
  8. query.contains('name', substr)
  9. MyFile.setQuery(query).find()

排序

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

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

示例代码

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

分页

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

示例代码

  1. let MyFile = new wx.BaaS.File()
  2. MyFile.limit(10).offset(5).find().then()

图片云处理

利用 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 进行图片云处理?

{% content “second” %}

SDK 1.1.2 以下版本

文件上传

wx.BaaS.uploadFile(fileParams)

fileParams 参数说明

参数 类型 必填 说明
filePath String Y 本地资源路径

返回参数说明

这里效仿微信的 wx.uploadFile 接口,放回 json string 的 data,经过 JSON parse 后的数据结构如下:

参数 类型 说明
status String 成功返回 ‘ok’
path String 上传后的文件地址
file Object 包含文件详细信息,详见以下

danger
file 字段只在 SDK version >= v1.1.1 中出现

file 参数说明:

参数 类型 说明
cdn_path String 文件在 cdn 上的路径
created_at String 文件上传时间
id Object 文件 ID
mime_type String 文件媒体类型
name String 文件名
size Number 以字节为单位

info
file 可用于含有 file 类型的数据表的数据操作,详细见 新增数据记录

示例代码

  1. wx.chooseImage({
  2. success: function(res) {
  3. let fileParams = {filePath: res.tempFilePaths[0]}
  4. wx.BaaS.uploadFile(fileParams).then(res => {
  5. /*
  6. * 注: 只要是服务器有响应的情况都会进入 success, 即便是 4xx,5xx 都会进入这里
  7. * 如果上传成功则会返回资源远程地址,如果上传失败则会返回失败信息
  8. */
  9. let data = JSON.parse(res.data) // res.data 为 JSON String 类型
  10. }, err => {
  11. })
  12. }
  13. })

返回示例

JSON.parse(res.data)

  1. {
  2. status: "ok",
  3. path: "https://cloud-minapp-1131.cloud.ifanrusercontent.com/1e2fVFaWoaoAZPyr.svg",
  4. file: {
  5. cdn_path: "1e2fVFaWoaoAZPyr.svg",
  6. created_at: 1507822469,
  7. id: "59df8b852ab80e3656cf8783",
  8. mime_type: "text/plain; charset=utf-8",
  9. name: "tmp_262601706o6zAJs-pmaywKzqHIvzwU97rtiGIe4dd39171563993cf10b12bae2ac30ec.svg",
  10. size: 3879
  11. }
  12. }

info
微信开发者工具录音结束后生成的是 base64 格式文本文件,而在真机上生成的是正常的 buffer。如果在开发者工具里上传录音文件,实际上传的会是一个 base64 格式的文本文件。因此,如果你在使用知晓云上传录音文件,请在真机上调试。该问题微信团队已知,并在修复当中。

{% endtabs %}