1.aspnetupload
它的大概原理是把檔案分成一塊一塊的上傳,然後用戶端用ajax不斷重新整理進而顯示進度條.

這也是我使用時間最長的一種解決方案,在IIS7出現以前完全沒有任何問題,但IIS7及以上版本中,如果用了這個控件,應用程式池就隻能運作在“經典”模式下,無法充分發揮IIS7的優點。
我向作者回報過該問題,遺憾的是貌似作者也沒有改進的意思。
2.silverlightUpload 開源項目
大緻原理:利用silverlight做界面,點選上傳時發起post請求到服務端,然後不斷回調顯示進度。
開啟圖檔縮略圖預覽後的樣子如下:
缺點:就是有點粗糙,不友善與Form表單整合.
這是我"漢化"後的源檔案(其實也就是改了改顔色,把英文換成了中文,呵呵)
<a href="http://cid-2959920b8267aaca.skydrive.live.com/self.aspx/Silverlight/SilverlightFileUploadSrc.rar">http://cid-2959920b8267aaca.skydrive.live.com/self.aspx/Silverlight/SilverlightFileUploadSrc.rar</a>
3.swfupload 開源項目
這個項目很成熟,推薦使用。
<a href="http://cid-2959920b8267aaca.skydrive.live.com/self.aspx/Web%E5%BC%80%E5%8F%91/SwfUpload%5E_Single%5E_FormDemo%5E_For%5E_Asp.Net%5E_4.0.rar">http://cid-2959920b8267aaca.skydrive.live.com/self.aspx/Web%e5%bc%80%e5%8f%91/SwfUpload^_Single^_FormDemo^_For^_Asp.Net^_4.0.rar</a>
這是我做的一個小Demo(Asp.Net4.0環境下的,必須用VS2010打開)
最後要提醒的一點是:安全第一!凡是有上傳的地方,都是可以上傳木馬的地方,不要相信任何用戶端送出過來的檔案。(比如客戶可以把.aspx改成.jpg上傳,如果伺服器管理者發神經把.jpg映射成跟.aspx一樣,嘿嘿...)
是以我的建議是:一定要在服務端檢測檔案MIME類型,要僞造這個是比較困難的,相對更安全;同時服務端上的上傳目錄不要給予任何執行權限,隻要讀取權限即可.