1 功能简介

文件上传控件一般用于在表单填报时需要上传附件的场景。可以通过配置来进行控制控件的文件上传个数、文件上传格式、单个文件最大容量、文件存储介质等。

2 配置说明

常规设置:

  • 控件支持的数据类型:仅支持字符型。
  • 最大文件数:配置控件允许上传文件的最大个数,允许上传的个数范围为1-500。
  • 存储类型:配置控件上传的文件存储位置,目前支持的存储类型有数据库、硬盘、FTP、分布式文件系统和阿里云OSS。
  • 文件格式:配置控件允许上传的文件格式类型,支持选择预设的格式分类,也支持自定义格式范围(V7.3.0新增)。
  • 最大容量(MB):配置上传的单个文件的最大容量。

显示与布局:

  • 文件上传控件在列表和详情页面默认以文件名称或文件图标显示,单击支持文件下载。也可以通过显示类型选择【文件】方式去设置,文件是否支持下载、是否支持预览、预览打开方式和默认点击的处理方式。
  • 其他配置说明请查阅章节 元数据>字段显示与布局
  • Word文件预览功能依托于运行OpenOffice实现,详见专题:OpenOffice安装和启动

文件上传控件【详情页面显示】在版本V7.3.0新增了【显示类型】:“文件预览”,用于支持详情页面默认打开字段中存储的首个文件进行预览,支持配置预览区域的高度。目前支持预览展示的文件格式:图片、PDF、OFD、Excel、Word。

适用于需要直接预览方式展示上传文件的场景,例如公告详情页面直接预览上传的Word、PDF文档,如下图所示。

高级设置:

  • 支持控件高级设置、校验设置、自动赋值设置和字段高级设置等,详细配置说明请查阅章节 元数据>字段高级设置
  • 控件高级设置中支持配置上传多个文件时PC端文件显示列数,默认为1列,支持配置1-3列,可以在文件较多时更好的利用页面空间。
  • 控件高级设置中支持配置是否在附件表sys_attachment中存储文件下载地址,以便跨设备上传保存的文件可以以链接方式被其他产品打开,详见 章节4 高级应用
  • 控件高级设置中支持配置“保留被移除的文件和附件表信息”,开启后从文件字段删除文件保存表单时不会删除附件表和存储介质中的文件,只把字段上的附件ID关联关系取消,适用于需要保留上传过的文件以备日后查询的业务场景。

3 显示交互

PC端样式:

  • 点击按钮进行文件上传

  • 文件格式不符合时校验提示

  • 最大文件上传数为1时,选择文件时仅支持单选,文件上传成功后不再显示上传按钮,文件上传后支持在编辑页面对文件进行删除、下载,部分文件类型支持在线预览

  • 单个字段允许上传多个文件,选择文件界面支持批量选中文件进行上传

  • 上传文件支持一键清除

  • 当上传文件个数较多时,可以在【控件高级设置】中配置文件显示列数,上传文件支持多列展示

移动端样式:

  • 以允许多个文件上传为例,移动端编辑样式如下图所示。移动端上传文件不支持下载,支持一键清除全部,仅部分格式文件支持在线预览,且不支持多列显示。

4 高级应用

生成文件下载地址(V6.9.4)

在文件上传控件的控件高级设置->其他设置,可以勾选是否生成文件下载地址。

1)生成文件下载地址: 生成的是基于乐创者平台提供的文件访问相对地址。对应sys_attachment表的 SA_DOWNLOAD_PATH 字段存储。可以勾选是否允许公开访问,若不允许公开访问,则在使用url时,需替换(传递)authId(用户认证信息)。

2)生成OSS下载地址: 若控件配置的是oss存储方式,则除了可以生成乐创者平台提供的文件访问地址外,也可以生成直接OSS提供访问的url地址。对应sys_attachment表的 SA_OPEN_PATH 字段存储。前提是OSS的Budget需要支持公开访问。

基于以上url地址,单元格报表\表单、数字大屏等产品及第三方应用都可以访问到跨设备表单维护的文件。

SELECT sys_attachment.* from `业务表` 
 LEFT JOIN sys_attachment on  FIND_IN_SET(sys_attachment.SA_ID, REPLACE(REPLACE(`业务表`.filea,'[',''),']',''))
WHERE `业务表`.id=28004
SELECT
    attachId,attachName, CONCAT("http://144.20.80.181:9017/HappyServer", REPLACE(SA_DOWNLOAD_PATH, '$[userAuthId]', '{userAuthId}')) AS fullname 
FROM
    (
    SELECT
        SUBSTRING_INDEX( SUBSTRING_INDEX( attachIds, ',', numbers.n ), ',', - 1 ) AS attachId,
        attachName 
    FROM
        (
        SELECT
            substring( filea, 2, LENGTH( filea)- 2 ) AS attachIds,
            `name` AS attachName 
        FROM
            `业务表` 
        WHERE
            filea IS NOT NULL 
            AND LENGTH( filea ) > 2 
        ) AS up  -- 查找包含上传id的字段
        JOIN ( SELECT 1 n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 ) numbers ON CHAR_LENGTH( up.attachIds ) - CHAR_LENGTH(
        REPLACE ( up.attachIds, ',', '' ))>= numbers.n - 1 
    ) AS businessInfo   -- 业务表字段
    LEFT JOIN sys_attachment AS attachment ON businessInfo.attachId = attachment.SA_ID
作者:Eric  创建时间:2023-08-08 13:47
最后编辑:Eric  更新时间:2025-04-24 13:55