反饋已提交

網絡繁忙

檔案上傳至資料庫並下載

1. 概述

1.1 應用場景

希望直接將 txt、Excel 等小型檔案儲存在資料庫中,並且在報表中將這些檔案下載下來。

1.2 實現思路

上傳:使用「檔案元件」上傳檔案,設定好填報屬性,以二進制流儲存至資料庫欄位中(欄位類型必須是可以存二進制資料的)

每種資料庫可以存檔案的欄位類型是不同的,以下列出常用資料庫儲存二進制資料的欄位類型:

資料庫  用於儲存二進制資料的欄位類型  
  Sql Sever image
  Oracle blob
  MySQL longblob
  Access

 OLE物件

注:Access需使用ODBC連結,方可實現上傳下載

下載:將二進制資料列拖入範本儲存格,設定儲存格屬性的其他>顯示內容用下載連結顯示二進制內容,就可以實現下載。

1.3 注意事項

1)本文檔適用於上傳單檔案場景,如果在同一筆資料中上傳多個檔案,入庫後會出現只儲存了一個檔案的情況。如有多檔案上傳需求,可考慮增加uuid欄位用於區分同一筆資料中的多個檔案。

2)本文檔適用於小檔案的上傳下載,檔案過大會佔用過多的資料庫表空間。如有大檔案上傳需求,建議使用:上傳下載檔案插件

3)設計器自帶的FRDemo所使用的sqlite資料庫,不支援檔案下載。

4)該方案不支援行動端。

5)出於安全考慮,需要登入決策平台帳號後才可以下載檔案

2. 範例

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(len(filename(C2)) = 6, B2, filename(C2))。公式的含義為:當檔案元件未上傳檔案時,直接取資料庫中的檔案名稱,否則則使用filename()函式獲取上傳的檔案名稱。

2)如果有插入列需求,那麼需要選中 D2 儲存格,設定「儲存格屬性>其他>插入列策略」為原值,否則插入的列的公式會失效。

3)在報表填報屬性中新增內建SQL,綁定欄和值,如下圖所示:

4)隱藏B欄和D欄。

2.4 下載設定

選中 C2 儲存格,設定儲存格的其他>顯示內容用下載連結顯示二進制內容,並設定下載檔案名」為=B2如下圖所示:

注:下載檔案名稱處為必填項,不填會下載 txt 或者 zip 包之類的亂碼檔案下來。

2.5 效果預覽

儲存範本,點選填報預覽。在C2儲存格可完成檔案的上傳和下載,並支援重新上傳檔案改寫之前儲存的檔案。如下圖所示:

資料庫中儲存的資料如圖所示:


3. 範本下載

附件列表


主題: 填報應用
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

文 檔回 饋

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉