# 概述

低代码提供文件存储的能力,提供了上传控件供页面设计时使用,上传的文件支持两种存储方式:系统文件目录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.添加监听事件

为业务对象实体添加删除前执行的事件,在实体删除之前先执行名称为文件删除的编排函数,删除文件附件。

顶部