FtpWebRequest Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Implementuje klienta FTP (File Transfer Protocol).
public ref class FtpWebRequest sealed : System::Net::WebRequest
public sealed class FtpWebRequest : System.Net.WebRequest
type FtpWebRequest = class
inherit WebRequest
Public NotInheritable Class FtpWebRequest
Inherits WebRequest
- Dědičnost
Příklady
Následující příklad kódu ukazuje odstranění souboru ze serveru 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;
}
Následující příklad kódu ukazuje stažení souboru ze serveru FTP pomocí WebClient třídy.
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;
}
Následující příklad kódu ukazuje použití asynchronních operací k nahrání souboru na server 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();
}
}
}
}
Poznámky
Důležité
Nedoporučujeme používat FtpWebRequest třídu pro nový vývoj. Další informace a alternativy k FtpWebRequestsadě WebRequest by se neměly používat na GitHubu.
Chcete-li získat instanci FtpWebRequest, použijte metodu Create . Třídu můžete také použít WebClient k nahrání a stažení informací ze serveru FTP. Pomocí některého z těchto přístupů zadáte síťový prostředek, který používá schéma FTP (například "ftp://contoso.com"), FtpWebRequest třída umožňuje programově pracovat se servery FTP.
Identifikátor URI může být relativní nebo absolutní. Pokud je identifikátor URI formuláře "ftp://contoso.com/%2fpath" (%2f je řídicí znak /), je identifikátor URI absolutní a aktuální adresář je /path. Pokud je však identifikátor URI formuláře "ftp://contoso.com/path", nejprve se rozhraní .NET Framework přihlásí k serveru FTP (pomocí uživatelského jména a hesla nastaveného Credentials vlastností), pak je aktuální adresář nastaven na <UserLoginDirectory>/path.
Musíte mít platné uživatelské jméno a heslo pro server nebo server musí povolit anonymní přihlášení. Přihlašovací údaje používané pro připojení k serveru můžete zadat nastavením Credentials vlastnosti nebo je můžete zahrnout do UserInfo části identifikátoru URI předaného metodě Create . Pokud do identifikátoru URI zahrnete UserInfo informace, Credentials vlastnost se nastaví na nové síťové přihlašovací údaje se zadaným uživatelským jménem a heslem.
Upozornění
Pokud tato EnableSsl vlastnost není true, budou se na server odesílat všechna data a příkazy, včetně vašeho uživatelského jména a hesla, ve formátu prostého textu. Každý, kdo monitoruje síťový provoz, může zobrazit vaše přihlašovací údaje a použít je k připojení k serveru. Pokud se připojujete k serveru FTP, který vyžaduje přihlašovací údaje a podporuje protokol SSL (Secure Sockets Layer), měli byste nastavit EnableSsl .true
Musíte mít WebPermission přístup k prostředku FTP. SecurityException V opačném případě se vyvolá výjimka.
Zadáním příkazu FTP odešlete na server nastavením Method vlastnosti na hodnotu definovanou ve struktuře WebRequestMethods.Ftp . Chcete-li přenést textová data, změňte UseBinary vlastnost z výchozí hodnoty (true) na false. Podrobnosti a omezení najdete v tématu Method.
Při použití FtpWebRequest objektu k nahrání souboru na server musíte zapsat obsah souboru do datového proudu požadavku získaného voláním GetRequestStream metody nebo jeho asynchronních protějšků, BeginGetRequestStream a EndGetRequestStream metod. Před odesláním požadavku musíte datový proud zapsat do datového proudu a zavřít ho.
Požadavky se odesílají na server voláním GetResponse metody nebo jejích asynchronních protějšků, metod BeginGetResponse a EndGetResponse metod. Po dokončení FtpWebResponse požadované operace se vrátí objekt. Objekt FtpWebResponse poskytuje stav operace a všechna data stažená ze serveru.
Pomocí vlastnosti můžete nastavit hodnotu časového limitu ReadWriteTimeout pro čtení nebo zápis na server. Pokud dojde k překročení časového limitu, vyvolá volající metoda hodnotu s WebExceptionStatus nastavenou WebException hodnotou Timeout.
Při stahování souboru ze serveru FTP, pokud byl příkaz úspěšný, je obsah požadovaného souboru k dispozici ve streamu objektu odpovědi. K tomuto datovému GetResponseStream proudu se dostanete voláním metody. Další informace najdete na webu FtpWebResponse.
Proxy Pokud je vlastnost nastavena přímo nebo v konfiguračním souboru, komunikace se serverem FTP se provádí prostřednictvím zadaného proxy serveru. Pokud je zadaným proxy serverem HTTP server, jsou podporovány pouze příkazy DownloadFile, ListDirectory a ListDirectoryDetails.
Pouze stažený binární obsah je uložen v mezipaměti; to znamená, že obsah přijatý pomocí DownloadFile příkazu s vlastností nastavenou UseBinary na true.
Pokud je to možné, použijte více FtpWebRequestexistujících připojení.
Další informace o protokolu FTP naleznete v dokumentu RFC 959: File Transfer Protocol.
Vlastnosti
| Name | Description |
|---|---|
| AuthenticationLevel |
Získá nebo nastaví hodnoty označující úroveň ověřování a zosobnění použité pro tento požadavek. (Zděděno od WebRequest) |
| CachePolicy |
Získá nebo nastaví zásady mezipaměti pro tento požadavek. (Zděděno od WebRequest) |
| ClientCertificates |
Získá nebo nastaví certifikáty používané k navázání šifrovaného připojení k serveru FTP. |
| ConnectionGroupName |
Získá nebo nastaví název skupiny připojení, která obsahuje bod služby použitý k odeslání aktuálního požadavku. |
| ContentLength |
Získá nebo nastaví hodnotu, která je ignorována FtpWebRequest třídou. |
| ContentOffset |
Získá nebo nastaví posun bajtu do souboru staženého tímto požadavkem. |
| ContentType |
Vždy vyvolá .NotSupportedException |
| CreatorInstance |
Zastaralé.
Při přepsání v potomk třídy získá objekt továrny odvozený z IWebRequestCreate třídy použité k vytvoření WebRequest instance pro vytvoření požadavku na zadaný identifikátor URI. (Zděděno od WebRequest) |
| Credentials |
Získá nebo nastaví přihlašovací údaje používané ke komunikaci se serverem FTP. |
| DefaultCachePolicy |
Definuje výchozí zásady mezipaměti pro všechny požadavky FTP. |
| EnableSsl |
Získá nebo nastaví Boolean , který určuje, že se má použít připojení SSL. |
| Headers |
Získá prázdný WebHeaderCollection objekt. |
| ImpersonationLevel |
Získá nebo nastaví úroveň zosobnění pro aktuální požadavek. (Zděděno od WebRequest) |
| KeepAlive |
Získá nebo nastaví Boolean hodnotu, která určuje, zda je řídicí připojení k serveru FTP uzavřeno po dokončení požadavku. |
| Method |
Získá nebo nastaví příkaz pro odeslání na server FTP. |
| PreAuthenticate |
Vždy vyvolá .NotSupportedException |
| Proxy |
Získá nebo nastaví proxy server použitý ke komunikaci se serverem FTP. |
| ReadWriteTimeout |
Získá nebo nastaví časový limit při čtení nebo zápisu do datového proudu. |
| RenameTo |
Získá nebo nastaví nový název souboru, který se přejmenuje. |
| RequestUri |
Získá identifikátor URI požadovaný touto instancí. |
| ServicePoint |
ServicePoint Získá objekt použitý pro připojení k serveru FTP. |
| Timeout |
Získá nebo nastaví počet milisekund čekání na požadavek. |
| UseBinary |
Získá nebo nastaví Boolean hodnotu, která určuje datový typ pro přenosy souborů. |
| UseDefaultCredentials |
Vždy vyvolá .NotSupportedException |
| UsePassive |
Získá nebo nastaví chování procesu přenosu dat klientské aplikace. |
Metody
| Name | Description |
|---|---|
| Abort() |
Ukončí asynchronní operaci FTP. |
| BeginGetRequestStream(AsyncCallback, Object) |
Začne asynchronně otevírat stream obsahu požadavku pro zápis. |
| BeginGetResponse(AsyncCallback, Object) |
Začne odesílat požadavek a přijímat odpověď ze serveru FTP asynchronně. |
| CreateObjRef(Type) |
Vytvoří objekt, který obsahuje všechny relevantní informace potřebné k vygenerování proxy serveru sloužícího ke komunikaci se vzdáleným objektem. (Zděděno od MarshalByRefObject) |
| EndGetRequestStream(IAsyncResult) |
Ukončí čekající asynchronní operaci spuštěnou s BeginGetRequestStream(AsyncCallback, Object). |
| EndGetResponse(IAsyncResult) |
Ukončí čekající asynchronní operaci spuštěnou s BeginGetResponse(AsyncCallback, Object). |
| Equals(Object) |
Určuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
| GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetLifetimeService() |
Zastaralé.
Načte objekt služby aktuální životnosti, který řídí zásady životnosti pro tuto instanci. (Zděděno od MarshalByRefObject) |
| GetObjectData(SerializationInfo, StreamingContext) |
Zastaralé.
Naplní SerializationInfo data potřebná k serializaci cílového objektu. (Zděděno od WebRequest) |
| GetRequestStream() |
Načte datový proud použitý k nahrání dat na server FTP. |
| GetRequestStreamAsync() |
Při přepsání v potomk třídy vrátí Stream pro zápis dat do internetového prostředku jako asynchronní operace. (Zděděno od WebRequest) |
| GetResponse() |
Vrátí odpověď serveru FTP. |
| GetResponseAsync() |
Při přepsání v potomk třídy vrátí odpověď na internetový požadavek jako asynchronní operace. (Zděděno od WebRequest) |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| InitializeLifetimeService() |
Zastaralé.
Získá objekt služby životnosti pro řízení zásad životnosti pro tuto instanci. (Zděděno od MarshalByRefObject) |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| MemberwiseClone(Boolean) |
Vytvoří mělkou kopii aktuálního MarshalByRefObject objektu. (Zděděno od MarshalByRefObject) |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
Explicitní implementace rozhraní
| Name | Description |
|---|---|
| ISerializable.GetObjectData(SerializationInfo, StreamingContext) |
Zastaralé.
Při přepsání v potomk třídy naplní SerializationInfo instanci dat potřebnými k serializaci WebRequest. (Zděděno od WebRequest) |