1:Http上傳
http上傳就是通過http協定來向伺服器上傳檔案,是以伺服器端應該有一個處理用戶端請求的頁面。
添加一個FileUploadHandler.ashx的檔案來處理用戶端請求。代碼如下:
這段代碼主要是擷取用戶端請求的Files,然後調用SaveAs方法儲存到伺服器端得UploadResources檔案夾下,
接着傳回一個http的路徑給用戶端。
上傳的代碼如下:
<a href="http://images.cnblogs.com/cnblogs_com/LoveJenny/201111/201111210635024307.png"></a>
2:Ftp上傳
首先需要建立Ftp站點:
可以使用工具建立,也可以使用iis來建立Ftp站點,在這裡我使用iis來承載。
<a href="http://images.cnblogs.com/cnblogs_com/LoveJenny/201111/20111121063504587.png"></a>
建立好Ftp站點後,假設
使用者名是:WQ,
密碼是:123456.
那麼上傳的代碼如下:
上面兩個示例是介紹如何上傳的,下面我對這兩種方式做一下比較:
當需要上傳大檔案時:
http協定:
MaxRequestLength 屬性指定輸入流緩沖門檻值的限制。 例如,此限制可用于防止向伺服器發送大型檔案的使用者所導緻的拒絕服務攻擊。
因為預設的asp.net 的maxRequestLength 為4096KB(4M),是以在上次大檔案的時候,需要設定
maxRequestLength,在上例中,我設定maxRequestLength為2147483647(我随便寫的,小于Int32.MaxValue就可以)
<a href="http://images.cnblogs.com/cnblogs_com/LoveJenny/201111/201111210635043029.png"></a>
上傳大檔案:
Ftp有明顯的天生的優勢,不需要将檔案全部載入記憶體中,http在這方面就比較薄落了, 當然也有人實作了分塊http上傳,但總體來說http上傳對于大檔案不适合,多大算大呢?,在區域網路中,個人認為超過了500M的檔案就不适合使用http協定來上傳了。
上傳小檔案:
非常适合http協定來上傳,因為簡單,而且可以實作更精細的控制,權限控制比ftp要簡單的多。
對于C/S類型的應用程式,如果确定檔案比較小,那麼可以采用http協定來上傳,如果檔案比較大的話,那最好還是采用ftp來上傳吧。
對于B/S類型的應用程式,因為Web應用程式本身上傳的就比較小,目前大部分網站采用的都是http協定來上傳的,是以他們大都會要求檔案符合一定的大小。
有人曾經說過可以在背景代碼裡面采用ftp來儲存檔案,但是仔細想想,檔案是如何傳遞到伺服器端的呢?,還是走
http協定,是以如果是這種方式的話,那就是下面的圖了:
用戶端->http協定->服務端->ftp協定->儲存到伺服器的硬碟上。
事實上如果不是這樣的話,可以直接
用戶端->http協定->服務端->儲存到伺服器的硬碟上。
是以如果要讓Web應用程式支援大檔案的話,有幾個選擇:
加大伺服器記憶體,因為用戶端檔案會緩存到伺服器記憶體中。
分塊的http上傳,也就是通過http協定一塊一塊的上傳檔案,然後合并所有的快。
開發上傳插件,或者flash,或者silverlight,或者activeX.
第一種方式是我亂說的,蛋疼的人可以試試,不過我相信,可能會出現記憶體抖動的效果。
第二種方式已經有人實作了,不過很複雜,借鑒下思路很好。
第三種方式要簡單很多,而且已經有大部分這種類型的插件了,拿來用吧。
以上是本人對http上傳和ftp上傳的看法,歡迎你留下高見.
本文轉自LoveJenny部落格園部落格,原文連結:http://www.cnblogs.com/LoveJenny/archive/2011/11/21/2256663.html,如需轉載請自行聯系原作者