Skip to content

Instantly share code, notes, and snippets.

@deepumi
Last active January 28, 2017 02:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save deepumi/4232263ce8593e7d4209e637f312424a to your computer and use it in GitHub Desktop.
Save deepumi/4232263ce8593e7d4209e637f312424a to your computer and use it in GitHub Desktop.
Ftp download files
internal class FtpClient
{
const string BaseUrl = "ftp://[IPADDRESS]/[FOLDER_PATH/";
private FtpWebRequest CreateRequest(string url)
{
var request = FtpWebRequest.Create(url) as FtpWebRequest;
request.Credentials = new NetworkCredential("[USERNAME]", "[PASSWORD]");
request.UsePassive = true;
request.UseBinary = true;
request.KeepAlive = true;
return request;
}
internal List<string> ListFiles()
{
List<string> files = new List<string>();
try
{
var request = CreateRequest(BaseUrl);
request.Method = WebRequestMethods.Ftp.ListDirectory;
using (FtpWebResponse response = request.GetResponse() as FtpWebResponse)
{
using (Stream responseStream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(responseStream))
{
while (!reader.EndOfStream)
{
files.Add(reader.ReadLine());
}
reader.Close();
}
}
}
}
catch
{
}
return files;
}
internal void DownloadFile(string fileName)
{
var request = CreateRequest(BaseUrl + "/" + fileName);
request.Method = WebRequestMethods.Ftp.DownloadFile;
//Streams
FtpWebResponse response = request.GetResponse() as FtpWebResponse;
Stream reader = response.GetResponseStream();
var memStream = new MemoryStream();
byte[] buffer = new byte[2048]; //downloads in chuncks //2048
while (true)
{
//Try to read the data
int bytesRead = reader.Read(buffer, 0, buffer.Length);
if (bytesRead >= 1)
{
memStream.Write(buffer, 0, bytesRead);
}
else
{
break;
}
}
var bytes = memStream.ToArray();
if(bytes != null && bytes.Length > 0)
{
var path = @"c:\temp\"+fileName;
File.WriteAllBytes(path, bytes);
}
reader.Close();
memStream.Close();
response.Close();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment