1. 概述
1.1 版本說明
報表伺服器版本 |
---|
11.0 |
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」,如下圖所示:
注:設定「下載檔案名稱」是為了下載後讓檔案可以顯示出想要的名稱。
如果不設定,PDF檔案下載後名叫download.pdf,其他格式檔案下載後是名為 download.zip 的壓縮包。
2.4 效果預覽
2.4.1 PC 端
儲存報表,選擇任意一種預覽方式,效果如下圖所示,可以直接點選連結下載檔案。
2.4.2 行動端
App 和 H5 端預覽,行動端顯示和下載的效果如下圖所示: