• 首页
  • 产品中心
    • 数式Oinone四大产品

      低代码开发平台无代码开发平台集成开发平台AI大模型开发
    • 数式Oinone体系能力

      用户与组织权限管理文件管理消息中心国际化业务审计
    • 数式Oinone核心产品特性

      低无一体面向软件公司场景无限制应用级扩容可分可合
  • 服务中心
    • 客户服务

      预约演示方案咨询私有部署找人定制
    • 开发者

      问答下载
    • Oinone学院

      社区学习

    《精讲面向软件公司的低代码平台——以Oinone为例》

  • 合作伙伴
    渠道申请伙伴名录专家库
  • 关于数式
0571-88757863

文件客户端 API(FileClient API)


一、概述

FileClient 是一个抽象接口,用于统一不同对象存储服务(如阿里云OSS、华为云OBS、腾讯云COS、MinIO、又拍云等)的文件操作。通过工厂类 FileClientFactory 获取实例,支持多CDN配置。

(一)获取实例

// 获取默认客户端
FileClient fileClient = FileClientFactory.getClient();

// 根据cdnKey获取特定客户端(多CDN配置时使用)
FileClient fileClient = FileClientFactory.getClient("cdnKey");

(二)配置示例:以阿里云OSS为例

cdn:
  oss:
    name: 阿里云
    type: OSS
    bucket: your-bucket-name
    uploadUrl: oss-cn-hangzhou.aliyuncs.com
    downloadUrl: oss-cn-hangzhou.aliyuncs.com
    accessKeyId: your-access-key-id
    accessKeySecret: your-access-key-secret
    mainDir: upload/
    validTime: 3600000  # 签名有效期(毫秒)
    timeout: 600000     # 请求超时时间
    active: true

更多配置参考:文件存储配置

二、方法说明

(一)上传文件

1、upload(String fileName, byte[] data)

  • 描述: 上传字节数组到OSS。
  • 参数:
    • fileName: 文件名(包含路径)
    • data: 文件内容的字节数组
  • 返回: CdnFile 包含文件元数据和访问URL
  • 示例:
byte[] data = ...; // 文件内容
CdnFile cdnFile = fileClient.upload("path/file.txt", data);

2、upload(String fileName, InputStream inputStream)

  • 描述: 通过输入流上传文件。
  • 参数:
    • fileName: 文件名(包含路径)
    • inputStream: 文件输入流
  • 返回: CdnFile
  • 示例:
try (InputStream is = new FileInputStream("local.txt")) {
    CdnFile cdnFile = fileClient.upload("path/file.txt", is);
}

3、uploadByFileName(String fileName, byte[] data)

  • 描述: 上传文件并返回下载URL。
  • 返回: 文件下载URL(String)
  • 示例:
String url = fileClient.uploadByFileName("path/image.png", imageData);

4、uploadByFileName(String fileName, InputStream inputStream)

  • 描述: 通过输入流上传文件并返回下载URL。
  • 示例:
String url = fileClient.uploadByFileName("path/image.png", inputStream);

(二)获取下载URL

1、getDownloadUrl(String fileName)

  • 描述: 获取通过 uploadByFileName 上传的文件的下载URL。
  • 参数: fileName - 上传时使用的文件名
  • 返回: 完整的下载URL
  • 示例:
String url = fileClient.getDownloadUrl("path/image.png");

(三)删除操作

1、deleteByFolder(String folder)

  • 描述: 删除指定文件夹下的所有文件。
  • 参数: folder - 文件夹路径
  • 示例:
fileClient.deleteByFolder("temp/");

2、deleteByFilename(String filename)

  • 描述: 删除指定文件。
  • 参数: filename - 完整文件名(含路径)
  • 示例:
fileClient.deleteByFilename("path/file.txt");

(四)文件检查

1、isExistByFilename(String filename)

  • 描述: 检查文件是否存在。
  • 返回: true 存在,false 不存在
  • 示例:
boolean exists = fileClient.isExistByFilename("path/file.txt");

(五)获取静态资源URL

1、getStaticUrl()

  • 描述: 获取静态资源根URL,根据配置决定是否使用CDN。
  • 返回: URL字符串
  • 示例:
String staticUrl = fileClient.getStaticUrl();

三、完整示例

批量上传文件并获取URL

private static Map<String, String> uploadFiles(File directory) {
    Map<String, String> result = new HashMap<>();
    File[] files = directory.listFiles();
    if (files == null) return result;

    for (File file : files) {
        try (FileInputStream is = new FileInputStream(file)) {
            String fileName = "widget/" + file.getName();
            fileClient.uploadByFileName(fileName, is);
            String url = fileClient.getDownloadUrl(fileName);
            result.put(file.getName(), url);
        } catch (Exception e) {
            throw new RuntimeException("Upload failed", e);
        }
    }
    return result;
}

四、数据结构 CdnFile

字段类型描述
nameString文件名
sizeLong文件大小(字节)
typeString文件类型
urlString文件完整访问URL

五、注意事项

  1. 多CDN配置: 使用 FileClientFactory.getClient(String cdnKey) 获取指定配置的客户端。
  2. 路径规范: 文件名建议包含路径(如 "images/avatar.jpg"),避免直接使用根目录。

六、支持的存储服务

服务商类型标识实现类
阿里云OSSOSSAliyunOSSClient
华为云OBSHUAWEI_OBSHuaweiOBSClient
本地存储LOCALLocalFileClient
MinIOMINIOMiniOssClient
又拍云UPYUNUpyunOSSClient
腾讯云COSTENCENT_COSTencentCosClient
编辑此页
最近更新:2026/1/15 04:02
上一页
消息中心 API(Message Hub API)
下一页
消息队列 API(MQ API)
默认页脚
Copyright © 2026 Mr.Hope