Last active
January 28, 2017 02:47
-
-
Save deepumi/4232263ce8593e7d4209e637f312424a to your computer and use it in GitHub Desktop.
Ftp download files
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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