.NET i FTP.

Pobieranie pliku z serwera FTP:

var request = FtpWebRequest.Create(ftpServer) as FtpWebRequest;
setCredentials(request);
FtpWebResponse response = (FtpWebResponse)request.GetResponse();

using (var destStream = new System.IO.BufferedStream(System.IO.File.Create(destinationFile)))
using (var srcStream = new System.IO.BufferedStream(response.GetResponseStream()))
{
  // Odczyt z srcStream i zapis do destStream
}

BufferedStream zapewnia elegancki sposób pobierania i zapisywania danych. Wewnątrz using, można operować na pojedynczych bajtach. Jednak odczyt z serwera FTP i zapis do pliku odbywa się w blokach danych – właśnie dzięki BufferedStream.

A co jeśli chcielibyśmy pokazać zaawansowanie operacji pobierania? Do tego potrzebujemy wielkości pliku. Niestety każda próba pobrania wielkości danych ze strumienia response.GetReponseStream() kończy się mało przyjemnym wyjątkiem. Szczęśliwie jest inna droga:

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpServer);
request.Method = WebRequestMethods.Ftp.GetFileSize;
setCredentials(request);
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
long fileSize = response.ContentLength;
Reklamy

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s

%d blogerów lubi to: