若要获得 FtpWebRequest 的实例,请使用 Create 方法。还可以使用 WebClient 类将信息上载到 FTP 服务器或从 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 属性来指定用于连接服务器的凭据,也可以将它们包含在传递给 Create 方法的 URI 的 UserInfo 部分中。如果 URI 中包含 UserInfo 信息,则使用指定的用户名和密码信息将 Credentials 属性设置为新的网络凭据。
警告: |
|---|
除非 EnableSsl 属性是 true,否则所有数据和命令(包括您的用户名和密码信息)都会以明文形式发送到服务器。监视网络流量的任何人都可以查看凭据并使用它们连接服务器。如果要连接的 FTP 服务器要求凭据并支持安全套接字层 (SSL),则应将 EnableSsl 设置为 true。 |
必须具有 WebPermission 才能访问 FTP 资源;否则会引发 SecurityException 异常。
通过将 Method 属性设置为 WebRequestMethods..::.Ftp 结构中定义的值,指定要发送到服务器的 FTP 命令。若要传输文本数据,请将 UseBinary 属性由默认值 (true) 更改为 false。有关详细信息和限制,请参见 Method。
如果使用 FtpWebRequest 对象向服务器上载文件,则必须将文件内容写入请求流,请求流是通过调用 GetRequestStream 方法或其异步对应方法(BeginGetRequestStream 和 EndGetRequestStream 方法)获取的。必须写入流并在发送请求之前关闭该流。
请求是通过调用 GetResponse 方法或其异步对应方法(BeginGetResponse 和 EndGetResponse 方法)发送到服务器的。请求的操作完成时,会返回一个 FtpWebResponse 对象。FtpWebResponse 对象提供操作的状态以及从服务器下载的所有数据。
您可以用 ReadWriteTimeout 属性设置用于读取或写入服务器的超时值。如果超过超时时间,则调用方法引发 WebException 并将 WebExceptionStatus 设置为 Timeout。
从 FTP 服务器下载文件时,如果命令成功,所请求的文件的内容即在响应对象的流中。通过调用 GetResponseStream 方法,可以访问此流。有关更多信息,请参见 FtpWebResponse。
如果设置了 Proxy 属性(直接设置或在配置文件中设置),与 FTP 服务器的通信将通过指定的代理进行。如果指定的代理是 HTTP 代理,则仅支持 DownloadFile、ListDirectory 和 ListDirectoryDetails 命令。
仅缓存已下载的二进制内容;也就是说,使用 UseBinary 属性设置为 true 的 DownloadFile 命令收到内容。
如果可能,多个 FtpWebRequest 重用现有连接。
有关 FTP 协议的更多信息,请参见位于 http://www.rfc-editor.org/ 上的 RFC 959“File Transfer Protocol”(文件传输协议)。