【LuBase低代码框架】私有化部署后如何扩展文件存储?

LuBase低代码框架中所有的图片、文件等附件默认存储到本地磁盘,但是一些私有化部署的企业大多有私有云存储,那么如何扩展下对解决到外部存储呢?首先呢我们需要了解下LuBase低代码框架文件存储的原理,以下介介绍下LuBase框架文件存储涉及到的表及扩展方法。

一、系统文件如何存储的

系统内表单中图片字段、附件字段,以及通过调用文件上传接口上传的文件,物理文件默认采用的本地存储,通过配置文件custom.file-upload.storage-type属性进行位置的控制。

文件和数据之间的映射关系通过以下两张表存储,具体如下:

sd_file_info文件存储记录表:

列代码

字段含义

id

主键id

storage_service

文件使用的服务,默认值是localFileStorageService

file_path

文件存储路径

file_name

自动生成的不重复的文件名字

original_name

文件原始的名字

file_size

文件大小,单位是字节

ex_type

文件扩展名

md5

文件唯一特征码。特征码相同的文件在此表不会重复存储

sd_file_relation 业务数据和文件的关系记录表

id

主键id

app_id

预留字段,暂时无用

data_id

附件对应的业务数据主键id

data_column_tag

附件对应的业务数据列的标识。因为一条业务数据可以有多个附件字段,通过data_column_tag来识别具体哪个附件字段存储的记录。

data_column_tag格式:业务数据表结构(dm_table)的主键id+英文逗号+业务数据列的code。例如:679613636607479808,img_key

file_info_id

外键字段,存储sd_file_info表主键id

original_name

文件原始的名字。

因同一特征码文件在sd_file_info只存储一次,但是在不同上传场景可能此文件名字不一样,所以此字段存储文件原始名字

二、如何扩展文件存储服务

如果需要对文件的存储进行扩展的话,可以通过实现FileStorageService接口,修改配置文件custom.file-upload.storage-type 为实现的服务名即可。此配置项不配置的默认值为:localFileStorageService。


  
  
  1. public interface FileStorageService {
  2. / **
  3. * 将二进制文件流进行存储
  4. *
  5. * @param group 预留参数,暂时无用
  6. * @param fileName 文件原始名字
  7. * @param uniqueName 文件唯一名字,自动生成
  8. * @param bs 文件流
  9. * @return 文件存储路径
  10. * @throws IOException
  11. */
  12. String writeFile( String group, String fileName, String uniqueName, byte[] bs) throws IOException;
  13. / **
  14. * 根据文件存储路径和文件名字读取文件
  15. *
  16. * @param filePath 文件路径
  17. * @param fileName 文件原始名字
  18. * @param uniqueName 文件唯一名字,在存储文件时生成的名字
  19. * @return
  20. */
  21. byte[] readFile( String filePath, String fileName, String uniqueName);
  22. }

在扩展FileStorageService服务时,无需手动存储sd_file_info和sd_file_relation两张表数据,会自动存储。

三、如何验证扩展的存储服务功能正常

最后附上测试用例,用以检查下您的扩展是否功能正常。以下罗列了部分测试用例,方便对新服务进行测试

序号

场景

期望

1

在同一条数据中,表单中多值附件字段,上传同名内容不同附件

文件下载正常

删除一个附件时,不影响其他

2

在不同数据中,上传同名不同内容附件

文件下载正常

删除一个附件时,不影响其他

3

在不同数据中,上传内容相同名称不同的附件

文件下载正常

删除一个附件时,不影响其他

4

在同一条数据中,上传内容相同名称不同的附件

文件下载正常

删除一个附件时,不影响其他

LuBase低代码系列文章:

【开发工具自荐】LuBase 低代码开发框架介绍-可私有化部署-CSDN博客

【LuBase低代码框架】表单引擎字段类型设计-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值