文件操作

文件上传

Storage.uploadFile(filename, bytes)

Storage.uploadFile(filename, categoryId, bytes)

参数说明

参数类型必填说明
filenameStringY文件名径
bytesStringY文件内容
categoryIdStringN文件归属目录

返回 CloudFile 的属性

参数类型说明
pathString文件的访问路径
mimeTypeString文件媒体类型
nameString文件名
mediaTypeString如果文件是视频/图片,表示文件的格式
cdnPathString文件在 path 上的名字
categoryFileCategory文件归属的目录

示例代码

  1. try {
  2. CloudFile avatar = Storage.uploadFile(file.getName(), "gallery", Files.readAllBytes(file.toPath()));
  3. user.put(User.AVATAR, avatar.getPath());
  4. user.save();
  5. // 操作成功
  6. } catch (Exception e) {
  7. Log.d(TAG, e.getMessage(), e);
  8. // 操作失败
  9. }

异常请参考异常

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

获取文件详情

Storage.file(fileId);

参数说明

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

示例代码

  1. try {
  2. CloudFile avatar = Storage.file("user_avatar_123");
  3. avatar...
  4. // 操作成功
  5. } catch (Exception e) {
  6. Log.d(TAG, e.getMessage(), e);
  7. // 操作失败
  8. }

异常请参考异常

删除文件

Storage.deleteFiles(fileIds)

参数说明

参数类型必填说明
fileIdsString CollectionY要删除的文件 id 列表

示例代码

  1. try {
  2. Storage.deleteFiles(Arrays.asList("avatar1", "avatar2", "avatar3"));
  3. // 操作成功
  4. } catch (Exception e) {
  5. // 操作失败
  6. }

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

查询,获取文件列表

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

支持字段类型说明
CloudFile.IDString文件 id
CloudFile.NAMEString文件名
CloudFile.SIZELong文件大小,以字节为单位
CloudFile.QUERY_CATEGORY_IDString文件分类 id
CloudFile.QUERY_CATEGORY_NAMEString文件分类名
CloudFile.CREATED_ATLong创建时间 (格式为 unix 时间戳)

示例代码

  1. try {
  2. // 查找所有文件
  3. PagedList<CloudFile> all = Storage.files(null);
  4. Where where = new Where();
  5. // 查询某一文件分类下的所有文件
  6. where.equalTo(CloudFile.QUERY_CATEGORY_NAME, "avatars");
  7. // 查询文件名包含指定字符串的文件
  8. where.contains(CloudFile.NAME, "_middle");
  9. Query query = new Query();
  10. query.put(where);
  11. PagedList<CloudFile> middleAvatars = Storage.files(query);
  12. // 操作成功
  13. } catch (Exception e) {
  14. // 操作失败
  15. }

排序

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

支持字段类型说明
CloudFile.NAMEString文件名
CloudFile.SIZELong文件大小,以字节为单位
CloudFile.CREATED_ATLong文件上传时间

示例代码

  1. try {
  2. // 查找所有文件
  3. Query query = new Query().orderBy(CloudFile.CREATED_AT);
  4. PagedList<CloudFile> all = Storage.files(query);
  5. // 操作成功
  6. } catch (Exception e) {
  7. // 操作失败
  8. }

分页

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

示例代码

  1. try {
  2. // 查找所有文件
  3. Query query = new Query().offset(10).limit(20);
  4. PagedList<CloudFile> pageTwo = Storage.files(query);
  5. // 操作成功
  6. } catch (Exception e) {
  7. // 操作失败
  8. }

图片云处理

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