以文本方式查看主題 - 曙海教育集團論壇 (http://www.xinguifushi.cn/bbs/index.asp) -- Microsoft.NET Framework (http://www.xinguifushi.cn/bbs/list.asp?boardid=68) ---- Microsoft .NET Framework 2.0對文件傳輸協議(FTP)操作總結1 (http://www.xinguifushi.cn/bbs/dispbbs.asp?boardid=68&id=2546) |
-- 作者:wangxinxin -- 發布時間:2010-12-13 14:50:39 -- Microsoft .NET Framework 2.0對文件傳輸協議(FTP)操作總結1 FTP上傳,下載,新建,刪除,FTP間傳送文件等 最近項目需要對FTP服務器進行操作,現把實現總結如下: 打算分2篇總結: 第1篇總結Ftp的一些常規的操作實現(例如:上傳,下載,新建,刪除,FTP間互傳文件等操作) 第2篇總結Ftp的操作的一些其他實現(例如:異步上傳,異步下載等其他操作) Microsoft .NET Framework 2.0新增加了3個類使我們很方便的對文件傳輸協議(FTP)服務器進行操作 FtpWebRequest類:實現文件傳輸協議(FTP)客戶端 public sealed class FtpWebRequest : WebRequest FtpWebResponse類:封裝文件傳輸協議(FTP)服務器對請求的響應 public class FtpWebResponse : WebResponse, IDisposable WebRequestMethods.Ftp類:表示可與FTP請求一起使用的FTP協議方法的類型,無法繼承此類 public static class Ftp 類關系圖 附件: FtpWebResponse_class.jpg 操作ftp的一般步驟我總結如下: 第一步:WebRequest.Create方法,獲得FtpWebRequest的實例 第二步:利用WebRequestMethods.Ftp設置FtpWebRequest的Method屬性,指定使用的FTP協議方法的類型 第三步:設置FtpWebRequest的Credentials屬性,指定用戶名和密碼 第四步:發出請求 第五步:接收響應數據流(有些ftp操作可能沒這一步,例如給文件夾改名) 第六步:關閉流 下面從幾段代碼來分別展示ftp的不同操作: 1.文件夾和文件信息 關鍵知識說明: a.FtpWebRequest類沒有公開的構造函數,我們通過WebRequest.Create方法,獲得FtpWebRequest的實例 b.通過WebRequestMethods.Ftp.ListDirectoryDetails(詳細列表)或者WebRequestMethods.Ftp.ListDirectory(簡短列表)獲取FTP服務器上的文件列表 c.請求返回的數據在GetResponseStream方法返回的流中 d.字符編碼請用System.Text.Encoding.Default,要不中文名會亂碼 e.FtpWebRequest.Credentials屬性設置登陸用戶名和密碼 f.FtpWebRequest.UseBinary屬性,true,指示服務器要傳輸的是二進制數據.false,指示數據為文本。默認值為true g.FtpWebRequest.EnableSsl屬性,如果控制和數據傳輸是加密的,則為true.否則為false.默認值為 false 實例代碼: 獲取ftp://218.16.229.120上的文件信息
附件: FtpWebResponse_msg.jpg 利用WebRequestMethods.Ftp.ListDirectoryDetails,readStream.ReadToEnd ( )返回的字符串比較復雜(不同類型的Ftp會有不同返回形式的返回結果),要把里面的文件夾和文件區分列出來比較繁瑣,代碼比較多,所以我沒寫出來,感興趣的朋友可以留言,我可以郵件發送. 2.取ftp登陸身份驗證完成后的歡迎信息 關鍵知識說明: a.FtpWebResponse.WelcomeMessage屬性獲取身份驗證完成時FTP服務器發送的消息 實例代碼: 獲取ftp://218.16.229.120登陸身份驗證完成后的歡迎信息
解決辦法:打補丁Microsoft .NET Framework 2.0 Service Pack 1 3.重命名目錄 關鍵知識說明: a.WebRequestMethods.Ftp.Rename表示重命名目錄的FTP協議方法 b.FtpWebRequest.RenameTo屬性重命名的新名稱 實例代碼: 把ftp://218.16.229.120/上的a目錄重命名為av
|