key words: 上傳文件
目里面有上傳文件的需求,我想了一下不外乎下面兩種處理方法:
1. 在數(shù)據(jù)庫表中建立一個blob字段存放用戶上傳文件.
2. 在服務器上建立一個文件夾保存用戶上傳文件,數(shù)據(jù)庫表中只存放該文件的url地址.
我本人現(xiàn)在比較傾向于第2種方案, 主要原因是擔心方案1的效率(我用的是mysql數(shù)據(jù)庫)。 但是處理過程中除了維護數(shù)據(jù)庫中表的字段還要維護上傳的文件,稍微麻煩一點。
大家在項目里面又是怎么做呢? 給我點建議!謝謝
討論內(nèi)容見:
javaeyerobin更建議第二種方案,放在數(shù)據(jù)庫中主要的問題是 AppServer吃不消,開銷比較大.
上面是摘錄,不過我們這里用的是Oracle9i AS,在Oracle的協(xié)作套間里一般文檔或者上傳的文件都是保存在數(shù)據(jù)庫里,還把這個特性作為Oracle 與別的協(xié)作套件之間不同的賣點。
大家以為如何? 我直覺是Oracle的DB和oc4j的AppServer對付這個似乎沒有開銷上的擔心,但是沒有實際檢測過。
換句話說,文件的管理是放在文件夾里方便還是數(shù)據(jù)庫里方便? 有點為難
update (2007-5-13):
還有一種方案結(jié)合了數(shù)據(jù)庫和IO,我認為比較可行,就是文件存在數(shù)據(jù)庫,但是下載的時候第一次從數(shù)據(jù)庫下載,然后第一次這個文件保存在一個臨時文件夾下面,以后每次下載的時候總是先檢查此臨時文件夾,如果已經(jīng)存在則直接下載,如果沒有則從數(shù)據(jù)庫重復這個動作。當然,保存在臨時文件夾下的文件的命名需要唯一,這個應該沒有問題。