2.1 数据准备1)在 MYSQL 数据库中创建一张数据库表「文件」,包含字段 (id[int]、file[longblob]、name[varchar])。如图所示:
2)新建数据集 ds1,从刚才的 MYSQL 数据库取数,sql 语句为:SELECT * FROM `文件`
2.2 模板设计如图设计模板,A2 单元格为文本控件,C2 单元格为文件控件。
C2 单元格的文件控件需勾选「只支持单文件上传」。
2.3 上传设置1)在 D2 单元格插入公式:=if(left(filename(C2)) = '#', B2, filename(C2))。公式的含义为:当文件控件未上传文件时,直接取数据库中的文件名,否则则使用 filename() 函数获取上传的文件名。
2)如果有插入行需求,那么需要选中 D2 单元格,设置「单元格属性>其他>插入行策略」为原值,否则插入的行的公式会失效。
3)在报表填报属性中添加内置 SQL,绑定列和值,如下图所示:
4)隐藏 B 列和 D 列。
2.4 下载设置选中 C2 单元格,设置单元格的「其他>显示内容」为「用下载链接显示二进制内容」,并设置「下载文件名」为=B2,如下图所示:
注:下载文件名处为必填项,不填会下载 txt 或者 zip 包之类的乱码文件下来。
2.5 效果预览保存模板,点击「填报预览」。在C2单元格可完成文件的上传和下载,并支持重新上传文件覆盖之前保存的文件。如下图所示:
数据库中保存的数据如图所示: