若要取得 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 屬性,指定連接到伺服器時使用的認證,或將它們包含在 URI 的 UserInfo 部分,傳遞至 Create 方法。如果在 URI 中包含 UserInfo 資訊,Credentials 屬性會設為具有指定使用者名稱和密碼資訊的新網路認證。
警告 |
|---|
| 除非 EnableSsl 屬性為 true,否則所有資料和命令 (包括使用者名稱和密碼資訊) 都會以純文字方式傳送至伺服器。監視網路流量的任何人,都可以檢視這些認證並使用它們來連接到伺服器。如果連接的 FTP 伺服器需要認證並支援 Secure Sockets Layer (SSL),您就應該將 EnableSsl 設為 true。 |
您必須擁有存取 FTP 資源的 WebPermission,否則會擲回 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 伺服器的通訊都會透過指定的 Proxy 進行。如果指定的 Proxy 是 HTTP Proxy,只支援 DownloadFile、ListDirectory 和 ListDirectoryDetails 命令。
只快取下載的二進位內容,亦即,使用 UseBinary 屬性設為 true 的 DownloadFile 命令所收到的內容。
在可能的情況下,多個 FtpWebRequest 會重複使用現有的連接。
如需 FTP 通訊協定的詳細資訊,請參閱 RFC 959<File Transfer Protocol>,網址為 http://www.rfc-editor.org/。