• 文件操作
    • SDK 1.1.2 及以上版本
      • 文件上传
      • 获取文件详情
      • 删除文件
      • 查询,获取文件列表
      • 排序
      • 分页
      • 图片云处理
    • SDK 1.1.2 以下版本
      • 文件上传

    文件操作

    {% 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 %}