1. 概述
1.1 版本说明
报表服务器版本 | JAR 包版本 | HTML5 移动端展现插件版本 | App 版本 | 功能变动 |
---|---|---|---|---|
10.0.13 | 2021-01-25 | 10.4.976 | 10.4.976 | 移动端支持显示可供下载的链接,且可以直接点击下载文件 PC 端所有预览方式都支持显示可供下载的链接 |
1.2 应用场景
FineReport 上传文件是以二进制编码形式保存到数据库表中的。
将存文件字段拖到单元格后,前端预览时显示的是二进制编码,如下图所示:
那么如何让图片和二进制文件在预览时,可以统一显示时成可供下载的链接呢?效果如下图所示:
1.3 实现思路
选中文件字段所在单元格,单元格属性的「其他」设置项下。
将「显示内容」设置为「用下载链接显示二进制内容」,如下图所示:
注:若数据库中存储的文件名不包含文件格式后缀,需要在文件名后面公式拼接后缀,否则下载的文件无法打开。如果是通过文件控件填报到数据库,填报的文件名应包含后缀。若不包含后缀下载的文件无法打开。
2. 示例
2.1 数据准备
示例并没有使用内置的数据库 FRDemo,因为该数据库不支持二进制编码。
此处使用 MySQL 进行演示,新建普通报表,新建数据集,查询出表 file 中的内容添加到数据集,如下图所示:
表 file 中有 2 个字段,文件名字段是字符串类型,存放文件的名称;文件字段是 blob 类型,存放的文件的二进制编码,如下图所示:
注1:因为是 SQLite 数据库,存放文件的字段一定要设置成 blob 类型的。
注2:MySQL 和 Oracle 需要将字段设置为 blob 类型,SQL Server 数据库需要设置为 image 类型。
2.2 设计表格
如下图设计表格,将 2 个字段分别拖入到 A2、B2 单元格中。
2.3 设置显示内容
选中 B2 单元格,将单元格属性「其他」下的显示内容设置为「用下载链接显示二进制内容」,下载文件名填入「=A2」,如下图所示:
注:设置「下载文件名」是为了下载后让文件可以显示出想要的名字,如果不设置,那么下载后就是一个名为 download.zip 的压缩包。
2.4 效果预览
2.4.1 PC 端
保存报表,选择任意一种预览方式,效果如下图所示,可以直接点击链接下载文件。
2.4.2 移动端
同时支持 App 端和 H5 端预览,移动端显示和下载的效果如下图所示: