在FineReport中,會出現(xiàn)希望直接將txt、excel等文件整個保存在數(shù)據(jù)庫中進(jìn)行備份,并且希望通過FineReport制作報表將這些文件下載下來的情況。
上傳:使用文件控件上傳文件,以二進(jìn)制流保存至數(shù)據(jù)庫字段中(字段類型必須是用于保存二進(jìn)制數(shù)據(jù)的);
下載:直接將二進(jìn)制數(shù)據(jù)拖入單元格,設(shè)置單元格的其他屬性>用下載鏈接顯示二進(jìn)制內(nèi)容,就可以下載文件。
下面通過上傳一個txt文件至sql server數(shù)據(jù)庫中并下載為例來說明實現(xiàn)過程。Sqlite數(shù)據(jù)庫僅支持上傳,不支持下載的。
前提準(zhǔn)備
準(zhǔn)備一個txt文件,數(shù)據(jù)庫中創(chuàng)建一張數(shù)據(jù)庫表file,包含字段(filename[文本]、file[Blob對象])
數(shù)據(jù)庫不同可以保存文件的字段類型是不同的,以下列出常用數(shù)據(jù)庫保存二進(jìn)制數(shù)據(jù)的字段類型:

上傳文件至數(shù)據(jù)庫
前提準(zhǔn)備好后,就可以制作一張?zhí)顖竽0澹蟼魑募綌?shù)據(jù)庫,文件以二進(jìn)制數(shù)據(jù)流保存在數(shù)據(jù)庫字段中,模板設(shè)計界面如下,并按照圖上說明設(shè)置報表填報屬性:

如果是單文件上傳,則可嚴(yán)格控制,勾選只支持單文件上傳,還可以設(shè)置允許上傳的文件類型;如果是多文件上傳,就不需要勾選只支持單文件上傳這個勾選項了。
保存模板,進(jìn)行填報預(yù)覽,上傳文件并提交,文件就會以二進(jìn)制數(shù)據(jù)保存到數(shù)據(jù)庫中:
鼠標(biāo)移至文件控件所在單元格,即B2,單擊右上角的編輯按鈕,進(jìn)入編輯狀態(tài),點擊上傳按鈕即可上傳文件,如下圖:



提交成功之后,在數(shù)據(jù)庫中可以看到數(shù)據(jù)。
下載
重新打開模板,添加數(shù)據(jù)庫查詢ds1,SQL語句為select *from file,將保存的數(shù)據(jù)查詢出來;將字段拖入到單元格中,并設(shè)置文件字段所在單元格的其他屬性>用下載鏈接顯示二進(jìn)制內(nèi)容,并設(shè)置下載后的文件名:

再次保存模板,填報預(yù)覽,就可以點擊下載了:
