1. 程式人生 > >用ASP.NET的FileUpload控制元件實現帶對話方塊的FTP檔案上傳功能

用ASP.NET的FileUpload控制元件實現帶對話方塊的FTP檔案上傳功能

      最近不得已開始做網頁,一個ASP.NET的專案,需要實現FTP上傳功能,於是上網廣搜程式碼,發現FTP上傳的程式碼到處都是,隨手拈來,可是一般來說客戶端上傳檔案都需要一個檔案選擇對話方塊,正好自帶的FileUpload控制元件能夠實現。但是網上搜到FileUpload的PostedFile.Save方法只能儲存到Web伺服器本地磁碟上(筆者不清楚該控制元件是否提供儲存到FTP上的方法,若有請指教),那麼就需要一個方法能夠結合FileUpload來實現FTP上傳。

      最開始想到的是隻要能獲取FileUpload彈出對話方塊選擇檔案的路徑,定義FileStream,利用FileStream.Open獲取指定路徑的檔案流,再利用FtpWebRequest.GetRequestStream()寫入這個流就可以了,但發現無法直接利用FileUpload獲取選定檔案的物理路徑。原因是獲取路徑的方法FileUpload.PostedFile.FileName在IE7/8,Chrome,Firefox瀏覽器下無法獲得完整路徑,只能獲得檔名,詳情請見

http://www.cnblogs.com/beckson/archive/2010/12/07/1899038.html

      後來查閱MSDN關於FileUpload.PostedFile的資料,它返回的是一個HttpPostedFile物件,發現它還有個InputStream屬性,返回選定檔案的流,於是明白了,一樣可以用這個流寫入到FTP中。

      程式碼如下: