最近做在做項目,牽涉到文件上載的問題,找來資料研究了一下。當使用者需要將檔案傳輸到伺服器上時,常用方法是使用FTP方式,用FTP的話雖然傳輸穩定,但安全性是個嚴重的問題,而且FTP伺服器讀用戶庫取得權限,這樣對於使用者使用來說還是不太方便。如果我們能把文件上載功能與Web集成,使用戶僅用網頁瀏覽器就能完成上載任務,這對他們來說將是非常方便的。
網路上有很多介紹ASP上載檔案的方法,歸結起來有以下三大類實作方法,讀者可以根據自己網站的條件和需求來選擇合適的方法。
一、伺服器元件上載方式:
此方法以SA-FileUp元件、AspUpload元件、lyfUpload元件為代表。
Software Artisans的SA-FileUp是最早的商業Active Server元件之一,幾經改進,現在作為一個純粹的ASP元件存在。 Persits Software的ASPUpload也是一個功能很強大的COM元件。他們都實現了各種文件上載所需的功能:上載大文件、限制上載文件的大小、上載多個文件、顯示上載進度條、能夠將文件保存到資料庫中、…。
此類別方法的優點是運作穩定,功能強大,對瀏覽器沒有任何要求。其缺點就是需要在伺服器上註冊元件。如果網站管理員對伺服器擁有管理權限,則該方法應該是實現檔案上載的首選。
二、無組件上載方式:
此方法以化境無組件上傳、無畏無組件上傳、先鋒無組件上傳等為代表。
此方法是網路上應用最多最廣的方法,並且有許多應用實例的原始程式碼,其優點是對伺服器和瀏覽器都沒有任何要求,適應性強,應用範圍廣。但它也存在著一個缺點,上載檔案的時候沒有進度條的顯示,並且IIS預設限制不允許上載超過200KB的檔案(除非修改IIS的預設設定AspMaxRequestEntityAllowed)。
如果只需要上載小文件,則應該是首選方案。如果需要上載大文件,則需要網站管理員修改IIS的預設設定AspMaxRequestEntityAllowed。
三、瀏覽器元件上載方式:
此方法以XUpload元件、XUploadFiles元件、縱橫HTTP檔案上傳元件為代表。
此方法在網路上應用相對要少一些,其優點是對伺服器無要求,不需要在伺服器上安裝元件,並且能提供檔案上載所需的各種功能:上載大檔案、限制上載檔案的大小、上載多個檔案、顯示上載進度條、…。其缺點也比較明顯,需要註冊瀏覽器元件(在客戶端)。此方法適用於需要上載大文件,而網站管理員對伺服器沒有管理權限的情況(如虛擬主機、租用空間等)。
伺服器要求 | 瀏覽器要求 | 上傳文件限制 | 上傳時有無進度條 | 其他 | |
---|---|---|---|---|---|
SA- | FileUp | 安裝 | 組件 | - | 支援 |
大文件,無限制 | 有進度條 | 需要有伺服器控制權AspUpload | 安裝元件 | - | 支援大文件,無限制有進度條需要有伺服器控制權 |
lyfUpload | 安裝元件 | - | 支援大文件,無限制 | | 要有伺服器控制權無需 |
化境無元件上傳 | - | - | 與IIS設定相關, IIS預設設定最大200KB | 無 | 通用, 適用小文件上載 |
無懼無元件上傳 | - | - | 與IIS設定相關, IIS預設設定最大200KB | 無 | 通用, 適用小檔案上載 |
先鋒無元件上傳 | - | - | 與IIS設定相關, IIS預設設定最大200KB | 無 | 通用, 適用小文件上載 |
XUploadFiles | - | 安裝元件 | 支援大文件,無限制 | 有進度條 | 租用空間, 而需要上載大文件 |
縱橫HTTP文件上傳元件 | - | 安裝元件 | 支援大文件,無限制 | 有進度條 | 租用空間, 而需要上載大文件 |