一般在使用UploadFile的元件時我們大多會將檔案存到Server上的實體路徑中,但在某些時候我們也會將附件直接存到資料庫中,這兩種作法在市面上都有人在使用
一般在使用UploadFile的元件時我們大多會將檔案存到Server上的實體路徑中,但在某些時候我們也會將附件直接存到資料庫中,這兩種作法在市面上都有人在使用,以下簡單比較一下兩者的優缺點:
檔案附件(實體檔):
優點:可做File Server,方便共享文件,搭配文管系統使用時很方便....
缺點:檔案的備份或移機不易、若文件不進行加密可能會被沒有權限的人竊取、檔案的全文檢索功能較困難。
資料附件(存DB):
優點:可直接備份DB、可透過系統進行附件的權限管制、搭配SQL Server可做附件的全文檢索....
缺點:DB的容積成長快速,容易影響效率....
其實兩者還有蠻多的差別我這邊沒有列出,但原則上適合用哪一個我倒覺得需要看狀況,下面簡單介紹一下如何透過UploadFile元件進行檔案的上傳:

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

根據以上的寫法,我們可以將PostedFile轉成byte[]格式,然透insert進image型態的資料庫欄位中(此例中欄位名稱是Content,SQL怎麼寫這邊不多說明)。
然後我們可以透過下面這端程式來下載剛剛上傳到資料庫中的資料:

02

03

04

05

06

07

08

09

10

11

12

13

上傳與下載之間還有Key需要對應,如果附件清單是用GridView來呈現的話,可直接取得對應的Key去找出該筆Row,指定好下載的檔名跟內容後就可以直接下載此檔案囉。
![]() |
游舒帆 (gipi) 探索原力Co-founder,曾任TutorABC協理與鼎新電腦總監,並曾獲選兩屆微軟最有價值專家 ( MVP ),離開職場後創辦探索原力,致力於協助青少年培養面對未來的能力。認為教育與組織育才其實息息相關,都是在為未來儲備能量,2018年起成立為期一年的專題課程《職涯躍升的關鍵24堂課》,為培養台灣未來的領袖而努力。 |