公用組件的設計——文件上傳案例,個人總結

最近負責項目組內部的一個文件上傳的公用組件設計,中間經歷了幾次代碼和功能的變更,以至於出現了組件的版本問題,舊的組件已經被組內其他人使用,新的版本組件又增加了新的組件功能,出現了功能和代碼的覆蓋,需要高版本兼容低版本的代碼。

總結來說,公用組件的設計支出需要考慮一下幾點:

1、泛用性需求的整理

2、組件的擴展

3、調用組件的方式

那文件上傳這個組件舉例說明:

首先,文件上傳組件通常包含幾個泛用性比較強的功能:上傳附件,附件管理(刪除附件,預覽附件,附件下載),附件限制(附件格式限制,附件數量限制,附件大小限制),上傳/刪除成功回調(消息提示,文件標識存儲(保證附件唯一)),另外還可以包含的功能:多附件壓縮打包下載,附件內容解析與導入(限制excel),組件的異常(斷點續傳)與安全。

上傳附件:文件上傳的核心功能;

附件管理:對上傳的附件做增刪改成的管理

附件限制:特殊業務場景,需要對文件的大小與格式有限制,也有一定的安全保障在內,限制用戶上傳非附件的文件,如腳本,jar,exe等執行文件

上傳/刪除成功回調:附件上傳/刪除成功,需要返回一個消息提示調用端結果,有些業務需要保存該文件的唯一標識符與真實文件名,這些都需要通過回調來實現。

多附件壓縮打包下載:某些業務場景,涉及衆多附件的下載,不肯能一個個點,或者一個個下載,需要在服務器壓縮打包,以壓縮包的格式下載。

附件內容解析與導入:這個功能使用在很多業務場景比較多,可以獨立成單獨的一個excel導出,導出功能組件了,也可以集成到附件上傳組件內。

組件的異常與安全:組件的異常處理,保證服務器,網絡等導致的異常可以正常通過消息提醒反饋,以及斷點續傳等。組件的安全性,有篇文章講可以把GIF或者 JPG文件和JAR文件捆綁在一起,然後欺騙服務器以爲是GIF或JPG文件,然後在客戶端的JVM中執行JAR,因爲附件組件還需要遵循一些安全規則:

1. 文件上傳的目錄設置爲不可執行
2. 判斷文件類型(附件限制)
3. 單獨設置文件服務器的域名,防止xss
4. 改寫文件名,文件路徑不可預測

 

當然,要完整設計一個良好,安全的組件是很難的,需要不斷的迭代更新,和擴展。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章