Skip to content

文件系统

解决不同环境下(国内,海外,本地,线上等),文件存储和访问的问题。

文件系统,提供三个目录:临时目录,共享目录,私有目录。使用者只需要关注自己文件的相对路径(或文件名)。

一. 目录类型:

  • 临时目录(读写):用于临时存储文件,系统重启后可能会被清空。

    描述:临时使用,存储在本地硬盘,为可读可写的文件目录。

  • 共享目录(读):用于存储需要被多个系统访问的公用文件。比如字体,系统Logo。

    描述:共享目录,可在运维平台上上传文件,为只读文件目录,第一次安装或发布更新时。共享文件将被自动发布到该文件目录中,可随时获取。 可全球发布,不同国家访问最接近的边缘节点资源或本地资源。

  • 私有目录(读写):用于存储只需要被当前系统访问的文件。比如用户上传的头像文件,商品图片等。

    描述:私有目录,为可读可写的文件目录,可持久化存储。 无状态容器:存储在线上OSS(或其他文件存储平台)上。 本地部署:存储在本地硬盘上。 私有部署:存储在本地硬盘上。 迁移时,可按集团迁移该目录。

二.文件系统提供功能:

  • 持久(私有+共享)存储:用户无需了解存储在哪(根据部署情况,存储在不同位置),需要使用时获取即可。
  • 删除(私有)文件(为保证安全,该功能暂不开放)。
  • 发布(共享)文件:在系统上线之前,即可将需要使用的公用文件,发布后获取可用路径(前端静态资源文件使用)。
  • 迁移(私有)文件:将本地文件统一迁移到线上,或线上文件统一迁移到本地。

使用步骤

保存文件

c#
var fileStorage = serviceProvider.GetRequiredService<IFileStorage>();

// 保存到临时目录
var url = await fileStorage.SaveAsync("文件.txt", FileStorageType.Temp);

// 保存到私有目录
var url = await fileStorage.SaveAsync("文件.txt", stream);

获取文件地址

c#
var fileStorage = serviceProvider.GetRequiredService<IFileStorage>();

// 获取URL
var url = await fileStorage.GetUrlAsync("文件.jpg");

// 获取绝对地址
var path = await fileStorage.GetRelativePathAsync("文件.txt");

上传共享文件

进入运维平台,部署 => 共享目录。(可上传文件,上传完成后,获取文件访问URL)(开发中)

广州宝点数字化科技