[local-file-system]基于服務器磁盤的本地文件存儲方案
僅提供后端方案
github
環境
- JDK11
- linux/windows/mac
應用場景
-
適用于ToB業務,中小企業的單體服務,僅使用磁盤存儲文件的解決方案
-
僅使用服務器磁盤存儲
-
與業務實體相結合的文件存儲方案,如企業中對于設備信息維護,需要上傳對應文件,類型包括”設備采購合同文件“,”設備驗收照片“等,在本項目中的維護形式可見如下圖。
效果示例
表結構設計
本項目使用sqlserver作為數據庫,目前僅提供sqlserver的表腳本初始化sql。
本項目持久性框架使用Mybatis-Plus,可輕松切換至Oracle,MySql等數據庫。
本項目主要使用兩個表
- t_file 文件信息的存儲表,包含文件名稱、類型后綴、大小、相對文件路徑(目前file_path表相對)、module模塊名(可對應配置存儲目錄)。注意,此表中module_name模塊用于分類。
- tr_link_file 文件與模塊的關聯表,使用link_id表示其他各種表(設備表、工廠表)的id主鍵, file_id表示t_file的id主鍵。module_name表示屬于哪個模塊的文件關聯(可以表示此link_id的來源)。
見如下圖,可表示為
- 設備需要維護設備照片信息,我們需要提前定義module_name為”
Equipment_photo
“,在前端通過api上傳后存儲到t_file,而實際文件存儲到對應磁盤位置,并返回FileInfo信息(fileId,fileName),前端得到已經存儲的文件id后,可在用戶點擊保存信息時,將fileId集合攜帶,系統再進行關聯操作,在tr_link_file表中維護對應的關聯數據。(缺點:用戶上傳文件后,如果不進行保存設備信息,那么tr_link_file的關聯是無法建立的。)