Recipe16.11.Download a File Using FTP


Recipe 16.11. Download a File Using FTP

Problem

You want to programmatically download files using the File Transfer Protocol (FTP).

Solution

Use the System.Net.FtpWebRequest class to download the files. FtpWebRequests are created from the WebRequest class Create method by specifying the URI for the FTP download. In the example that follows, the source code from the first edition of the C# Cookbook is the target for the download. A FileStream is opened for the target and then is wrapped by a BinaryWriter. A BinaryReader is created with the response stream from the FtpWebRequest. Then the stream is read and the target is written until the entire file has been downloaded. This series of operations is demonstrated in Example 16-17.

Example 16-17. Using the System.Net.FtpWebRequest class

 // Go get the same code from edition 1 FtpWebRequest request =     (FtpWebRequest)WebRequest.Create(     "ftp://ftp.oreilly.com/pub/examples/csharpckbk/CSharpCookbook.zip"); request.Credentials = new NetworkCredential("anonymous", "hilyard@oreilly.com"); using (FtpWebResponse response = (FtpWebResponse)request.GetResponse()) {     Stream data = response.GetResponseStream();     string targetPath = "CSharpCookbook.zip";     if (File.Exists(targetPath))         File.Delete(targetPath);     byte[] byteBuffer = new byte[4096];     using (FileStream output = new FileStream(targetPath, FileMode.CreateNew))     {         int bytesRead = 0;         do         {             bytesRead = data.Read(byteBuffer, 0, byteBuffer.Length);             if (bytesRead > 0)             {                 output.Write(byteBuffer, 0, bytesRead);             }         }         while (bytesRead > 0);     } } 

Discussion

The File Transfer Protocol (FTP) is defined in RFC 959 and is one of the main ways files are distributed over the Internet. The port number for FTP is usually 21. Happily, you don't have to really know much about how FTP works in order to use it. This could be useful to your applications in automatic download of information from a dedicated FTP site or in providing automatic update capabilities.

See Also

See the "FtpWebRequest Class," "FtpWebResponse Class," "WebRequest Class," and "WebResponse Class" topics in the MSDN documentation.



C# Cookbook
Secure Programming Cookbook for C and C++: Recipes for Cryptography, Authentication, Input Validation & More
ISBN: 0596003943
EAN: 2147483647
Year: 2004
Pages: 424

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net