文件 - 文件操作

优质
小牛编辑
150浏览
2023-12-01

{% 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 参数说明(必须)

参数类型必填说明
filePathStringY本地资源路径

metaData 参数说明(可选)

参数类型必填说明
categoryIDStringN要上传的文件分类 ID
categoryNameStringN要上传的文件分类名

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

返回参数说明

res.data:

参数类型说明
statusString成功返回 ‘ok’
pathString上传后的文件地址
fileObject包含文件详细信息,详见以下

file 参数说明:

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

示例代码

  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)

参数说明

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

返回参数说明

res.data:

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

category 参数说明:

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

示例代码

  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)

参数说明

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

示例代码

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

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

查询,获取文件列表

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

支持字段类型说明
idString文件 id
nameString文件名
sizeNumber文件大小,以字节为单位
category_idString文件分类 id
category_nameString文件分类名

示例代码

  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()

排序

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

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

示例代码

  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 参数说明

参数类型必填说明
filePathStringY本地资源路径

返回参数说明

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

参数类型说明
statusString成功返回 ‘ok’
pathString上传后的文件地址
fileObject包含文件详细信息,详见以下

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

file 参数说明:

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

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