<dfn id="is4kg"></dfn>
  • <ul id="is4kg"></ul>
  • <abbr id="is4kg"></abbr>
  • <ul id="is4kg"></ul>
    <bdo id="is4kg"></bdo>
    以文本方式查看主題

    -  曙海教育集團論壇  (http://www.hufushizhe.com/bbs/index.asp)
    --  Microsoft.NET Framework  (http://www.hufushizhe.com/bbs/list.asp?boardid=68)
    ----  Microsoft .NET Framework 2.0對文件傳輸協(xié)議(FTP)操作總結(jié)1  (http://www.hufushizhe.com/bbs/dispbbs.asp?boardid=68&id=2546)

    --  作者:wangxinxin
    --  發(fā)布時間:2010-12-13 14:50:39
    --  Microsoft .NET Framework 2.0對文件傳輸協(xié)議(FTP)操作總結(jié)1
    FTP上傳,下載,新建,刪除,FTP間傳送文件等

    最近項目需要對FTP服務(wù)器進行操作,現(xiàn)把實現(xiàn)總結(jié)如下:
    打算分2篇總結(jié):
    第1篇總結(jié)Ftp的一些常規(guī)的操作實現(xiàn)(例如:上傳,下載,新建,刪除,FTP間互傳文件等操作)
    第2篇總結(jié)Ftp的操作的一些其他實現(xiàn)(例如:異步上傳,異步下載等其他操作)

    Microsoft .NET Framework 2.0新增加了3個類使我們很方便的對文件傳輸協(xié)議(FTP)服務(wù)器進行操作
    FtpWebRequest類:實現(xiàn)文件傳輸協(xié)議(FTP)客戶端
    public sealed class FtpWebRequest : WebRequest

    FtpWebResponse類:封裝文件傳輸協(xié)議(FTP)服務(wù)器對請求的響應(yīng)
    public class FtpWebResponse : WebResponse, IDisposable

    WebRequestMethods.Ftp類:表示可與FTP請求一起使用的FTP協(xié)議方法的類型,無法繼承此類
    public static class Ftp

    類關(guān)系圖

    附件: FtpWebResponse_class.jpg


    操作ftp的一般步驟我總結(jié)如下:
    第一步:WebRequest.Create方法,獲得FtpWebRequest的實例
    第二步:利用WebRequestMethods.Ftp設(shè)置FtpWebRequest的Method屬性,指定使用的FTP協(xié)議方法的類型
    第三步:設(shè)置FtpWebRequest的Credentials屬性,指定用戶名和密碼
    第四步:發(fā)出請求
    第五步:接收響應(yīng)數(shù)據(jù)流(有些ftp操作可能沒這一步,例如給文件夾改名)
    第六步:關(guān)閉流



    下面從幾段代碼來分別展示ftp的不同操作:
    1.文件夾和文件信息
    關(guān)鍵知識說明:
    a.FtpWebRequest類沒有公開的構(gòu)造函數(shù),我們通過WebRequest.Create方法,獲得FtpWebRequest的實例
    b.通過WebRequestMethods.Ftp.ListDirectoryDetails(詳細列表)或者WebRequestMethods.Ftp.ListDirectory(簡短列表)獲取FTP服務(wù)器上的文件列表
    c.請求返回的數(shù)據(jù)在GetResponseStream方法返回的流中
    d.字符編碼請用System.Text.Encoding.Default,要不中文名會亂碼
    e.FtpWebRequest.Credentials屬性設(shè)置登陸用戶名和密碼
    f.FtpWebRequest.UseBinary屬性,true,指示服務(wù)器要傳輸?shù)氖嵌M制數(shù)據(jù).false,指示數(shù)據(jù)為文本。默認值為true
    g.FtpWebRequest.EnableSsl屬性,如果控制和數(shù)據(jù)傳輸是加密的,則為true.否則為false.默認值為 false

    實例代碼:
    獲取ftp://218.16.229.120上的文件信息
    1. Uri uri = new Uri ( "ftp://218.16.229.120" );

    2. FtpWebRequest listRequest = ( FtpWebRequest ) WebRequest.Create ( uri );

    3. listRequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
    4. //listRequest.Method = WebRequestMethods.Ftp.ListDirectory;

    5. string ftpUser = "";
    6. string ftpPassWord = "";
    7. listRequest.Credentials = new NetworkCredential ( ftpUser , ftpPassWord );

    8. FtpWebResponse listResponse = ( FtpWebResponse ) listRequest.GetResponse ( );
    9. Stream responseStream = listResponse.GetResponseStream ( );
    10. StreamReader readStream = new StreamReader ( responseStream , System.Text.Encoding.Default );

    11. if ( readStream != null )
    12. {
    13.     MessageBox.Show ( readStream.ReadToEnd ( )  );
    14. }

    15. MessageBox.Show ( string.Format ( "狀態(tài): {0},{1}" ,listResponse.StatusCode,  listResponse.StatusDescription ) );

    16. listResponse.Close ( );
    17. responseStream.Close ( );
    18. readStream.Close ( );
    復(fù)制代碼
    通過WebRequestMethods.Ftp.ListDirectoryDetails(詳細列表)或者WebRequestMethods.Ftp.ListDirectory(簡短列表)返回的結(jié)果是不一樣的.請看圖
    附件: FtpWebResponse_msg.jpg

    利用WebRequestMethods.Ftp.ListDirectoryDetails,readStream.ReadToEnd ( )返回的字符串比較復(fù)雜(不同類型的Ftp會有不同返回形式的返回結(jié)果),要把里面的文件夾和文件區(qū)分列出來比較繁瑣,代碼比較多,所以我沒寫出來,感興趣的朋友可以留言,我可以郵件發(fā)送.



    2.取ftp登陸身份驗證完成后的歡迎信息
    關(guān)鍵知識說明:
    a.FtpWebResponse.WelcomeMessage屬性獲取身份驗證完成時FTP服務(wù)器發(fā)送的消息

    實例代碼:
    獲取ftp://218.16.229.120登陸身份驗證完成后的歡迎信息
    1. Uri uri = new Uri ( "ftp://218.16.229.120" );

    2. FtpWebRequest listRequest = ( FtpWebRequest ) WebRequest.Create ( uri );

    3. listRequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails;

    4. string ftpUser = "";
    5. string ftpPassWord = "";
    6. listRequest.Credentials = new NetworkCredential ( ftpUser , ftpPassWord );

    7. FtpWebResponse listResponse = ( FtpWebResponse ) listRequest.GetResponse ( );

    8. MessageBox.Show ( listResponse.WelcomeMessage );
    復(fù)制代碼
    附加說明:要是FTP服務(wù)器的歡迎信息帶有中文,運行這段代碼時可能會發(fā)生異常(基礎(chǔ)連接已經(jīng)關(guān)閉: 服務(wù)器提交了協(xié)議).
    解決辦法:打補丁Microsoft .NET Framework 2.0 Service Pack 1



    3.重命名目錄
    關(guān)鍵知識說明:
    a.WebRequestMethods.Ftp.Rename表示重命名目錄的FTP協(xié)議方法
    b.FtpWebRequest.RenameTo屬性重命名的新名稱

    實例代碼:
    ftp://218.16.229.120/上的a目錄重命名為av
    1. Uri uri = new Uri ( "ftp://218.16.229.120/a" );

    2. FtpWebRequest listRequest = ( FtpWebRequest ) WebRequest.Create ( uri );

    3. listRequest.Method = WebRequestMethods.Ftp.Rename;

    4. string ftpUser = "";
    5. string ftpPassWord = "";
    6. listRequest.Credentials = new NetworkCredential ( ftpUser , ftpPassWord );

    7. listRequest.RenameTo = "av";

    8. FtpWebResponse listResponse = ( FtpWebResponse ) listRequest.GetResponse ( );

    9. MessageBox.Show ( listResponse.StatusDescription );

    主站蜘蛛池模板: **真实毛片免费观看| 九一制片厂免费传媒果冻| 精品精品国产高清a毛片| 国产综合久久久久久鬼色| 久久久久99人妻一区二区三区| 欧美另类videos黑人极品| 午夜欧美精品久久久久久久| 韩国v欧美v亚洲v日本v| 国产高清视频一区二区| 中文字幕日韩精品无码内射| 日韩在线你懂的| 国产精品久久久久影院| 中文在线最新版天堂| 欧美日韩一二区| 嗨动漫在线观看| 韩国理论福利片午夜| 好紧我太爽了再快点视频| 九九免费精品视频在这里| 欧美日韩高清一区二区三区电影| 和前辈夫妇交换性3中文字幕| 青青草原综合久久大伊人| 国产韩国精品一区二区三区| 中文字幕一精品亚洲无线一区 | 久久精品国产99国产| 玉蒲团之风雨山庄| 国产亚洲一区二区在线观看| 1000部国产成人免费视频| 国内精品区一区二区三| 一级成人a做片免费| 手机在线观看av片| 亚洲欧美日韩综合在线| 男人j放进女人p全黄| 国产AV无码专区亚洲精品| 野狼第一精品社区| 国产精品久久久久久久久齐齐| chinese麻豆自制国产| 日本xxxx高清在线观看免费| 人妻av一区二区三区精品| 精品人妻人人做人人爽夜夜爽| 国产精品久久久久久久久99热| jizzjizzjizz中国|