HI END


一种永不妥协,追求极致与完美的精神与态度。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2008年11月25日工作日记

Posted on 2008-11-26 08:56  HI END  阅读(264)  评论(0编辑  收藏  举报

1.//FileInfo能获得此文件的相关信息,如name,length,createtime…

FileInfo file = new FileInfo(filepath);

 

2.NET Framework 通过 FtpWebRequest(实现文件传输协议 (FTP) 客户端) FtpWebResponse(封装文件传输协议 (FTP) 服务器对请求的响应) 类提供对 FTP 协议的全面支持。这些类是从 WebRequest WebResponse 派生的。

 

3. 此示例显示如何将文件上载到 FTP 服务器

using System;

using System.IO;

using System.Net;

using System.Text;

 

namespace Examples.System.Net

{

    public class WebRequestGetExample

    {

        public static void Main ()

        {

            //使用此对象与服务器建立连接,提供FTP的地址,以及要执行的方法

            FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://www.contoso.com/test.htm");

            request.Method = WebRequestMethods.Ftp.UploadFile;

 

            //提供请求的凭证,即用户名和密码,此事例假设使用的是匿名用户

            request.Credentials = new NetworkCredential ("anonymous","janeDoe@contoso.com");

           

            //将文件内容装载入请求的流中

            StreamReader sourceStream = new StreamReader("testfile.txt");

            byte [] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());

            sourceStream.Close();

            request.ContentLength = fileContents.Length;

 

            Stream requestStream = request.GetRequestStream();

            requestStream.Write(fileContents, 0, fileContents.Length);

            requestStream.Close();

 

            FtpWebResponse response = (FtpWebResponse)request.GetResponse();

   

            Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription);

   

            response.Close();

            }

        }

}

4.此示例显示如何从 FTP 服务器下载文件

using System;

using System.IO;

using System.Net;

using System.Text;

 

namespace Examples.System.Net

{

    public class WebRequestGetExample

    {

        public static void Main ()

        {

            //使用此对象与服务器建立连接。

            FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://www.contoso.com/test.htm");

            request.Method = WebRequestMethods.Ftp.DownloadFile;

 

            //提供请求的凭证,即用户名和密码,此事例假设使用的是匿名用户

            request.Credentials = new NetworkCredential ("anonymous","janeDoe@contoso.com");

 

            FtpWebResponse response = (FtpWebResponse)request.GetResponse();

   

            Stream responseStream = response.GetResponseStream();

            StreamReader reader = new StreamReader(responseStream);

            Console.WriteLine(reader.ReadToEnd());

 

            Console.WriteLine("Download Complete, status {0}", response.StatusDescription);

   

            reader.Close();

            response.Close(); 

        }

    }

}

 

 

5.c#快截键

ctrl   +   J     列出成员列表  
ctrl   +   shift   +   space  
参数信息  
Alt   +  
右方向键     完成单词

 

 

 

 

6. FTP断点续传的原理
客户端的实现步骤如下:

一、下载:
1
、向服务器发送“REST + 本地文件长度命令,告诉服务器,客户端要断点下载了。这时服务器还不知道客户端要下载哪个文件;
2
、向服务器发送“RETR + 文件名命令,通知服务器要下载的文件名,这时服务器开始定位文件指针读文件并发送数据。
3
、客户端定位本地文件指针(文件末尾);
4
、两端的准备工作都做完了以后,客户端创建socket,以被动或非被动方式建立数据通道,循环调用recv接收数据并追加入本地文件;

二、上传:
1
、获取服务器上和本地要上传文件的同名文件大小;
2
、向服务器发送“APPE 文件名,通知服务器,接下来从数据通道发送给你的数据要附加到这个文件末尾。
3
、定位本地文件指针(和FTP上文件大小相同的位置)
4
、从文件指针处读数据并发送。

 

7. 下面的代码示例演示如何将文件复制到请求的数据流,以及如何将请求发送到服务器以便上载数据并将数据追加到文件。

public static bool AppendFileOnServer(string fileName, Uri serverUri)

{

    //Uri的格式必须如下所示

    // 例如: ftp://contoso.com/someFile.txt.

    // 在服务器端这数据将被追加到文件

   

    if (serverUri.Scheme != Uri.UriSchemeFtp)

    {

        return false;

    }

    // 与服务器建立连接

    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverUri);

    //FTP命令

    request.Method = WebRequestMethods.Ftp.AppendFile;

   

    StreamReader sourceStream = new StreamReader(fileName);

    byte [] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());

    sourceStream.Close();

    request.ContentLength = fileContents.Length;

 

    // 此例子假设是用匿名用户登陆

    request.Credentials = new NetworkCredential ("anonymous","janeDoe@contoso.com");

    Stream requestStream = request.GetRequestStream();

    requestStream.Write(fileContents, 0, fileContents.Length);

    requestStream.Close();

    FtpWebResponse response = (FtpWebResponse) request.GetResponse();

   

    Console.WriteLine("Append status: {0}",response.StatusDescription);

   

    response.Close(); 

    return true;

}