本文由机器翻译。若要查看英语原文,请勾选“英语”复选框。 也可将鼠标指针移到文本上,在弹出窗口中显示英语原文。
翻译
英语

FtpWebRequest 类

 

实现文件传输协议 (FTP) 客户端。

命名空间:   System.Net
程序集:  System(位于 System.dll)

System.Object
  System.MarshalByRefObject
    System.Net.WebRequest
      System.Net.FtpWebRequest

public sealed class FtpWebRequest : WebRequest

名称说明
System_CAPS_pubpropertyAuthenticationLevel

获取或设置用于此请求的身份验证和模拟的级别。(继承自 WebRequest。)

System_CAPS_pubpropertyCachePolicy

获取或设置此请求的缓存策略。(继承自 WebRequest。)

System_CAPS_pubpropertyClientCertificates

获取用于建立到 FTP 服务器的加密连接的证书。

System_CAPS_pubpropertyConnectionGroupName

获取或设置连接组的名称,该连接组包含用于发送当前请求的服务点。(覆盖 WebRequest.ConnectionGroupName。)

System_CAPS_pubpropertyContentLength

此 API 支持 产品 基础结构,不应从代码直接使用。 获取或设置被 FtpWebRequest 类忽略的值。(覆盖 WebRequest.ContentLength。)

System_CAPS_pubpropertyContentOffset

获取或设置请求所下载的文件的字节偏移量。

System_CAPS_pubpropertyContentType

此 API 支持 产品 基础结构,不应从代码直接使用。 总是引发 NotSupportedException(覆盖 WebRequest.ContentType。)

System_CAPS_pubpropertyCreatorInstance

已过时。 当在子类中重写时,获取从 IWebRequestCreate 类派生的工厂对象,该类用于创建为生成对指定 URI 的请求而实例化的 WebRequest(继承自 WebRequest。)

System_CAPS_pubpropertyCredentials

获取或设置用于与 FTP 服务器通信的凭据。(覆盖 WebRequest.Credentials。)

System_CAPS_pubpropertySystem_CAPS_staticDefaultCachePolicy

定义所有 FTP 请求的默认缓存策略。

System_CAPS_pubpropertyEnableSsl

获取或设置 Boolean,它指定是否使用 SSL 连接。

System_CAPS_pubpropertyHeaders

此 API 支持 产品 基础结构,不应从代码直接使用。 获取空 WebHeaderCollection 对象。(覆盖 WebRequest.Headers。)

System_CAPS_pubpropertyImpersonationLevel

获取或设置当前请求的模拟级别。(继承自 WebRequest。)

System_CAPS_pubpropertyKeepAlive

获取或设置一个 Boolean 值,该值指定在请求完成之后是否关闭到 FTP 服务器的控制连接。

System_CAPS_pubpropertyMethod

获取或设置要发送到 FTP 服务器的命令。(覆盖 WebRequest.Method。)

System_CAPS_pubpropertyPreAuthenticate

此 API 支持 产品 基础结构,不应从代码直接使用。 总是引发 NotSupportedException(覆盖 WebRequest.PreAuthenticate。)

System_CAPS_pubpropertyProxy

获取或设置用于与 FTP 服务器通信的代理。(覆盖 WebRequest.Proxy。)

System_CAPS_pubpropertyReadWriteTimeout

获取或设置写入或读取流时的超时。

System_CAPS_pubpropertyRenameTo

获取或设置重命名文件的新名称。

System_CAPS_pubpropertyRequestUri

获取此实例所请求的 URI。(覆盖 WebRequest.RequestUri。)

System_CAPS_pubpropertyServicePoint

获取用于连接 FTP 服务器的 ServicePoint 对象。

System_CAPS_pubpropertyTimeout

获取或设置等待请求的毫秒数。(覆盖 WebRequest.Timeout。)

System_CAPS_pubpropertyUseBinary

获取或设置一个 Boolean 值,该值指定文件传输的数据类型。

System_CAPS_pubpropertyUseDefaultCredentials

此 API 支持 产品 基础结构,不应从代码直接使用。 总是引发 NotSupportedException(覆盖 WebRequest.UseDefaultCredentials。)

System_CAPS_pubpropertyUsePassive

获取或设置客户端应用程序的数据传输过程的行为。

名称说明
System_CAPS_pubmethodAbort()

终止异步 FTP 操作。(覆盖 WebRequest.Abort()。)

System_CAPS_pubmethodBeginGetRequestStream(AsyncCallback, Object)

开始以异步方式打开请求的内容流以便写入。(覆盖 WebRequest.BeginGetRequestStream(AsyncCallback, Object)。)

System_CAPS_pubmethodBeginGetResponse(AsyncCallback, Object)

开始以异步方式向 FTP 服务器发送请求并从 FTP 服务器接收响应。(覆盖 WebRequest.BeginGetResponse(AsyncCallback, Object)。)

System_CAPS_pubmethodCreateObjRef(Type)

创建包含所有生成代理用于与远程对象进行通信所需的相关信息的对象。(继承自 MarshalByRefObject。)

System_CAPS_pubmethodEndGetRequestStream(IAsyncResult)

结束由 BeginGetRequestStream 启动的挂起的异步操作。(覆盖 WebRequest.EndGetRequestStream(IAsyncResult)。)

System_CAPS_pubmethodEndGetResponse(IAsyncResult)

结束由 BeginGetResponse 启动的挂起的异步操作。(覆盖 WebRequest.EndGetResponse(IAsyncResult)。)

System_CAPS_pubmethodEquals(Object)

确定指定的对象是否等于当前对象。(继承自 Object。)

System_CAPS_pubmethodGetHashCode()

作为默认哈希函数。(继承自 Object。)

System_CAPS_pubmethodGetLifetimeService()

检索当前生存期服务对象,用于控制此实例的生存期策略。(继承自 MarshalByRefObject。)

System_CAPS_pubmethodGetRequestStream()

检索用于向 FTP 服务器上载数据的流。(覆盖 WebRequest.GetRequestStream()。)

System_CAPS_pubmethodGetRequestStreamAsync()

当在子类中被重写时,将用于写入数据的 Stream 作为异步操作返回到 Internet 资源。(继承自 WebRequest。)

System_CAPS_pubmethodGetResponse()

返回 FTP 服务器响应。(覆盖 WebRequest.GetResponse()。)

System_CAPS_pubmethodGetResponseAsync()

当在子代类中被重写时,将作为异步操作返回对 Internet 请求的响应。(继承自 WebRequest。)

System_CAPS_pubmethodGetType()

获取当前实例的 Type(继承自 Object。)

System_CAPS_pubmethodInitializeLifetimeService()

获取生存期服务对象来控制此实例的生存期策略。(继承自 MarshalByRefObject。)

System_CAPS_pubmethodToString()

返回表示当前对象的字符串。(继承自 Object。)

名称说明
System_CAPS_pubinterfaceSystem_CAPS_privmethodISerializable.GetObjectData(SerializationInfo, StreamingContext)

此 API 支持 产品 基础结构,不应从代码直接使用。 当在子代类中重写时,使用序列化 WebRequest 所需要的数据来填充 SerializationInfo 实例。(继承自 WebRequest。)

若要获取的实例 FtpWebRequest, ,使用 Create 方法。 您还可以使用 WebClient 类上载和下载从 FTP 服务器的信息。 使用任一种方法,当您指定使用 FTP 方案的网络资源 (例如, "ftp://contoso.com") FtpWebRequest 类提供以编程方式与 FTP 服务器交互的能力。

该 URI 可以是相对值还是绝对值。 如果窗体的 URI 为 "ftp://contoso.com/%2fpath" (%2f 是转义字符 /),则该 URI 是绝对的并是当前目录 /path 如果,但是,该 URI 是窗体的 "ftp://contoso.com/path", ,.NET Framework 首次登录到 FTP 服务器 (通过使用用户名和密码设置 Credentials 属性),则当前目录设置为 <UserLoginDirectory>/path

您必须具有有效的用户名和密码的服务器或服务器必须允许匿名登录。 您可以指定用来设置连接到服务器的凭据 Credentials 属性也可以将它们包含在 UserInfo URI 部分传递到 Create 方法。 如果包含 UserInfo 在 URI 中,信息 Credentials 属性设置为指定的用户名和密码信息与新的网络凭据。

System_CAPS_caution小心

除非 EnableSsl 属性是 true, ,所有数据和命令,其中包括您的用户名和密码信息,向服务器都发送以明文形式。 监视网络流量的任何人都可以查看您的凭据和使用它们来连接到服务器。 如果您要连接到 FTP 服务器要求凭据,并支持安全套接字层 (SSL),应设置 EnableSsltrue

您必须具有 WebPermission 来访问 FTP 的资源; 否则为 SecurityException 则会引发异常。

指定要通过设置发送到服务器的 FTP 命令 Method 属性中定义的值 WebRequestMethods.Ftp 结构。 若要传输的文本数据,更改 UseBinary 属性的默认值 (true) 到 false 有关详细信息和限制,请参阅 Method

当使用 FtpWebRequest 对象以将文件上载到服务器,必须将文件内容写入请求流通过调用获得 GetRequestStream 方法或其异步对应 BeginGetRequestStreamEndGetRequestStream 方法。 必须写入到流,并在发送请求之前关闭流。

请求被发送到服务器,通过调用 GetResponse 方法或其异步对应 BeginGetResponseEndGetResponse 方法。 所请求的操作完成后, FtpWebResponse 返回对象。 FtpWebResponse 对象提供的操作以及从服务器下载的任何数据的状态。

您可以设置超时值以进行读取或写入服务器通过使用 ReadWriteTimeout 属性。 如果超出超时期限,调用方法将引发 WebExceptionWebExceptionStatus 设置为 Timeout

如果该命令已成功从 FTP 服务器下载文件时, 所请求的文件的内容中提供了响应对象的流。 您可以通过调用访问此流 GetResponseStream 方法。 有关详细信息,请参阅FtpWebResponse

如果 Proxy 属性设置,或者直接或在配置文件中,与 FTP 服务器之间的通信都通过指定的代理。 如果指定的代理是 HTTP 代理,则仅 DownloadFile, ,ListDirectory, ,和 ListDirectoryDetails 支持命令。

仅下载二进制内容缓存;也就是说,用接收内容 DownloadFile 命令 UseBinary 属性设置为 true

多个 FtpWebRequest重用现有连接,如有可能。

有关 FTP 协议的详细信息,请参阅 RFC 959,"文件传输协议,"网址 http://www.rfc-editor.org/

下面的代码示例演示如何从 FTP 服务器中删除一个文件。

public static bool DeleteFileOnServer(Uri serverUri)
{
    // The serverUri parameter should use the ftp:// scheme.
    // It contains the name of the server file that is to be deleted.
    // Example: ftp://contoso.com/someFile.txt.
    // 

    if (serverUri.Scheme != Uri.UriSchemeFtp)
    {
        return false;
    }
    // Get the object used to communicate with the server.
    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverUri);
    request.Method = WebRequestMethods.Ftp.DeleteFile;

    FtpWebResponse response = (FtpWebResponse) request.GetResponse();
    Console.WriteLine("Delete status: {0}",response.StatusDescription);  
    response.Close();
    return true;
}

下面的代码示例演示如何通过使用从 FTP 服务器下载文件 WebClient 类。

public static bool DisplayFileFromServer(Uri serverUri)
{
    // The serverUri parameter should start with the ftp:// scheme.
    if (serverUri.Scheme != Uri.UriSchemeFtp)
    {
        return false;
    }
    // Get the object used to communicate with the server.
    WebClient request = new WebClient();

    // This example assumes the FTP site uses anonymous logon.
    request.Credentials = new NetworkCredential ("anonymous","janeDoe@contoso.com");
    try 
    {
        byte [] newFileData = request.DownloadData (serverUri.ToString());
        string fileString = System.Text.Encoding.UTF8.GetString(newFileData);
        Console.WriteLine(fileString);
    }
    catch (WebException e)
    {
        Console.WriteLine(e.ToString());
    }
    return true;
}

下面的代码示例演示如何使用异步操作以将文件上载到 FTP 服务器。

using System;
using System.Net;
using System.Threading;

using System.IO;
namespace Examples.System.Net
{
    public class FtpState
    {
        private ManualResetEvent wait;
        private FtpWebRequest request;
        private string fileName;
        private Exception operationException = null;
        string status;

        public FtpState()
        {
            wait = new ManualResetEvent(false);
        }

        public ManualResetEvent OperationComplete
        {
            get {return wait;}
        }

        public FtpWebRequest Request
        {
            get {return request;}
            set {request = value;}
        }

        public string FileName
        {
            get {return fileName;}
            set {fileName = value;}
        }
        public Exception OperationException
        {
            get {return operationException;}
            set {operationException = value;}
        }
        public string StatusDescription
        {
            get {return status;}
            set {status = value;}
        }
    }
    public class AsynchronousFtpUpLoader
    {  
        // Command line arguments are two strings:
        // 1. The url that is the name of the file being uploaded to the server.
        // 2. The name of the file on the local machine.
        //
        public static void Main(string[] args)
        {
            // Create a Uri instance with the specified URI string.
            // If the URI is not correctly formed, the Uri constructor
            // will throw an exception.
            ManualResetEvent waitObject;

            Uri target = new Uri (args[0]);
            string fileName = args[1];
            FtpState state = new FtpState();
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create(target);
            request.Method = WebRequestMethods.Ftp.UploadFile;

            // This example uses anonymous logon.
            // The request is anonymous by default; the credential does not have to be specified. 
            // The example specifies the credential only to
            // control how actions are logged on the server.

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

            // Store the request in the object that we pass into the
            // asynchronous operations.
            state.Request = request;
            state.FileName = fileName;

            // Get the event to wait on.
            waitObject = state.OperationComplete;

            // Asynchronously get the stream for the file contents.
            request.BeginGetRequestStream(
                new AsyncCallback (EndGetStreamCallback), 
                state
            );

            // Block the current thread until all operations are complete.
            waitObject.WaitOne();

            // The operations either completed or threw an exception.
            if (state.OperationException != null)
            {
                throw state.OperationException;
            }
            else
            {
                Console.WriteLine("The operation completed - {0}", state.StatusDescription);
            }
        }
        private static void EndGetStreamCallback(IAsyncResult ar)
        {
            FtpState state = (FtpState) ar.AsyncState;

            Stream requestStream = null;
            // End the asynchronous call to get the request stream.
            try
            {
                requestStream = state.Request.EndGetRequestStream(ar);
                // Copy the file contents to the request stream.
                const int bufferLength = 2048;
                byte[] buffer = new byte[bufferLength];
                int count = 0;
                int readBytes = 0;
                FileStream stream = File.OpenRead(state.FileName);
                do
                {
                    readBytes = stream.Read(buffer, 0, bufferLength);
                    requestStream.Write(buffer, 0, readBytes);
                    count += readBytes;
                }
                while (readBytes != 0);
                Console.WriteLine ("Writing {0} bytes to the stream.", count);
                // IMPORTANT: Close the request stream before sending the request.
                requestStream.Close();
                // Asynchronously get the response to the upload request.
                state.Request.BeginGetResponse(
                    new AsyncCallback (EndGetResponseCallback), 
                    state
                );
            } 
            // Return exceptions to the main application thread.
            catch (Exception e)
            {
                Console.WriteLine("Could not get the request stream.");
                state.OperationException = e;
                state.OperationComplete.Set();
                return;
            }

        }

        // The EndGetResponseCallback method  
        // completes a call to BeginGetResponse.
        private static void EndGetResponseCallback(IAsyncResult ar)
        {
            FtpState state = (FtpState) ar.AsyncState;
            FtpWebResponse response = null;
            try 
            {
                response = (FtpWebResponse) state.Request.EndGetResponse(ar);
                response.Close();
                state.StatusDescription = response.StatusDescription;
                // Signal the main application thread that 
                // the operation is complete.
                state.OperationComplete.Set();
            }
            // Return exceptions to the main application thread.
            catch (Exception e)
            {
                Console.WriteLine ("Error getting response.");
                state.OperationException = e;
                state.OperationComplete.Set();
            }
        }
    }
}

WebPermission

for accessing the resource referenced by this request. Associated enumeration: F:System.Net.NetworkAccess.Connect.

.NET Framework
自 2.0 起可用

此类型的所有公共静态(Visual Basic 中的 已共享 在 Visual Basic 中)成员都是线程安全的。不保证所有实例成员都是线程安全的。

返回页首
显示: