# 概述
低代码提供文件存储的能力,提供了上传控件供页面设计时使用,上传的文件支持两种存储方式:系统文件目录和S3,可按需选用任意一种或多种存储方式。此外,系统会自动记录所有上传的文件,并提供内置的管理页面,可查看文件列表和下载文件。
# 快速接入
# 引入依赖
<dependency>
<groupId>net.bingosoft.fuse.oss</groupId>
<artifactId>lcdp-services-manager-file</artifactId>
<version>${lcdp.version}</version>
</dependency>
至此,最简单的接入方式就完成了!默认情况下,采用系统文件目录的方式存储文件,并会根据日期每天生成子文件夹分类存放文件。
# 添加配置
模块内所有的配置文件都有默认值,如无需求,可以不用任何配置。
# application.yml
# 文件上传下载配置
services:
file:
file-system:
dir: "file:./files" # 文件存放的根目录
max-size: 50 # 允许上传的文件大小,单位MB
# 文件上传
使用组件库里的数据输入分类中的上传组件。
在属性页中还可以指定文件存放的目录。
为上传控件添加交互,获取上传成功事件的参数,这部分数据包含文件基础信息和上传文件成功后返回的fileId(下载文件需要用到这个fileId),可以通过设置页面变量的方式按需将这些数据存入业务数据对象里,下图演示了将文件fileId和文件名存入业务对象的fileId和fileName字段。
事件参数样例如下:
{
"result": [ {
"status": "finished",
"name": "编排.png",
"size": 59245,
"percentage": 100,
"uid": 1720082715212,
"showProgress": false,
"response": {
"fileId": "0JuWjdCllKeGmYzKyLSG"
}
}],
"response": {
"fileId": "0JuWjdCllKeGmYzKyLSG"
},
"file": {
"status": "finished",
"name": "编排.png",
"size": 59245,
"percentage": 100,
"uid": 1720082715212,
"showProgress": false,
"response": {
"fileId": "0JuWjdCllKeGmYzKyLSG"
}
}
}
# 文件下载
为按钮或者其他控件添加交互,执行动作为请求下载文件,主要需要配置下载地址和文件名称。
- 下载地址:
utils.config.find("file.download")+"/"+entity.fileId,下载地址是系统下载接口地址+文件上传成功返回的fileId,上图样例的entity.fileId演示的是使用前例存入业务数据对象里的fileId - 文件名称:可以自定义下载成功的文件的文件名,上图样例的entity.fileName演示的是使用前例存入业务数据对象里的文件名
# 通过编排的方式删除文件
引入文件模块之后,编排设计页会提供删除文件节点,下面介绍其中一种常见的使用场景。
如上文上传文件中所述,某个业务对象关联了文件附件,在删除业务对象的同时,想删除关联的文件,可以通过函数编排的方式,删除业务对象时触发编排函数,完成附件删除。
# 1.创建编排
# 2.添加监听事件
为业务对象实体添加删除前执行的事件,在实体删除之前先执行名称为文件删除的编排函数,删除文件附件。
