Created
February 10, 2016 19:23
-
-
Save Fresh-Dev/ac078426bef915bdc6ed to your computer and use it in GitHub Desktop.
FTP-Helper Class
This file contains hidden or 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
// | |
// | |
// Ftp File Helper | |
// | |
// | |
//Funktionen: | |
//CheckConnection | |
//UploadFile | |
//GetFileList | |
//DownloadFile | |
//DeleteFile | |
//CreateFolder | |
using System; | |
using System.Collections.Generic; | |
using System.Linq; | |
using System.Text; | |
using System.Net; | |
using System.IO; | |
using System.Threading; | |
class FtpHelper | |
{ | |
#region Properties | |
public string Adress { get; set; } | |
public string User { get; set; } | |
public string Password { get; set; } | |
#endregion | |
#region Constructor | |
/// <summary> | |
/// Initialisiert eine neue Instanz der FTP Helper Klasse | |
/// </summary> | |
/// <param name="adress">Name oder IP Adresse des Servers</param> | |
/// <param name="user">Benutzername</param> | |
/// <param name="password">Passwort</param> | |
public FtpHelper(string adress, string user, string password) | |
{ | |
this.Adress = adress; | |
this.User = user; | |
this.Password = password; | |
} | |
#endregion | |
#region Events | |
public delegate void ReceivedFileListCompleteEventhandler(); | |
public event ReceivedFileListCompleteEventhandler ReceivedFileListComplete; | |
#endregion | |
/// <summary> | |
/// Überprüft ob eine Verbindung zum FTP Server besteht | |
/// </summary> | |
public void CheckConnection() | |
{ | |
try | |
{ | |
FtpWebRequest.DefaultWebProxy = null; | |
FtpWebRequest ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + this.Adress + "/")); | |
ftpWebRequest.Credentials = new NetworkCredential(this.User, this.Password); | |
//Als Methode muss ListDirectory gewählt werden! | |
ftpWebRequest.Method = WebRequestMethods.Ftp.ListDirectory; | |
WebResponse webResponse = ftpWebRequest.GetResponse(); | |
} | |
catch (Exception) | |
{ | |
throw; | |
} | |
} | |
/// <summary> | |
/// Lädt Dateien auf einen FTP Server | |
/// </summary> | |
/// <param name="remoteFolder">Zielverzeichnis</param> | |
/// <param name="fileInfo"></param> | |
public void UploadFile(string remoteFolder, FileInfo fileInfo) | |
{ | |
try | |
{ | |
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(new Uri("ftp://" + Adress + "/" + remoteFolder + "/" + fileInfo.Name)); | |
request.Method = WebRequestMethods.Ftp.UploadFile; | |
request.Credentials = new NetworkCredential(User, Password); | |
Stream ftpStream = request.GetRequestStream(); | |
FileStream file = File.OpenRead(fileInfo.FullName); | |
int length = 1024; | |
byte[] buffer = new byte[length]; | |
int bytesRead = 0; | |
do | |
{ | |
bytesRead = file.Read(buffer, 0, length); | |
ftpStream.Write(buffer, 0, bytesRead); | |
} | |
while (bytesRead != 0); | |
file.Close(); | |
ftpStream.Close(); | |
} | |
catch (WebException) | |
{ | |
throw; | |
} | |
} | |
/// <summary> | |
/// Lädt Dateien auf einen FTP Server | |
/// </summary> | |
/// <param name="fileInfo"></param> | |
public void UploadFile(FileInfo fileInfo) | |
{ | |
this.UploadFile("", fileInfo); | |
} | |
/// <summary> | |
/// Liefert eine Liste von Dateien zurück, die sich in einem bestimmten Verzeichnis auf dem Server befinden | |
/// </summary> | |
/// <returns></returns> | |
public List<string> GetFileList(string remoteFolder) | |
{ | |
FtpWebRequest ftpWebRequest = (FtpWebRequest)WebRequest.Create("ftp://" + Adress + "/" + remoteFolder); | |
ftpWebRequest.Method = WebRequestMethods.Ftp.ListDirectory; | |
WebResponse webResponse = null; | |
ftpWebRequest.Credentials = new NetworkCredential(User, Password); | |
try | |
{ | |
webResponse = ftpWebRequest.GetResponse(); | |
} | |
catch (Exception) | |
{ | |
throw; | |
} | |
List<string> files = new List<string>(); | |
StreamReader streamReader = new StreamReader(webResponse.GetResponseStream()); | |
while (!streamReader.EndOfStream) | |
{ | |
files.Add(streamReader.ReadLine()); | |
} | |
streamReader.Close(); | |
webResponse.Close(); | |
return files; | |
} | |
/// <summary> | |
/// Liefert eine Liste von Dateien zurück | |
/// </summary> | |
/// <returns></returns> | |
public List<string> GetFileList() | |
{ | |
return this.GetFileList(""); | |
} | |
/// <summary> | |
/// Lädt eine Datei vom FTP Server herunter | |
/// </summary> | |
public void DownloadFile(string remoteFolder, FileInfo file, string destinationFolder, FileInfo destinationFile) | |
{ | |
try | |
{ | |
WebClient webClient = new WebClient(); | |
webClient.Credentials = new NetworkCredential(User, Password); | |
byte[] data = webClient.DownloadData(new Uri("ftp://" + Adress + "/" + remoteFolder + "/" + file.Name)); | |
FileStream fileStream = File.Create(destinationFolder + @"\" + destinationFile); | |
fileStream.Write(data, 0, data.Length); | |
fileStream.Close(); | |
} | |
catch (WebException) | |
{ | |
throw; | |
} | |
} | |
/// <summary> | |
/// Lädt eine Datei vom FTP Server herunter | |
/// </summary> | |
/// <param name="file"></param> | |
/// <param name="destinationFolder"></param> | |
/// <param name="destinationFile"></param> | |
public void DownloadFile(FileInfo file, string destinationFolder, FileInfo destinationFile) | |
{ | |
this.DownloadFile("", file, destinationFolder, destinationFile); | |
} | |
/// <summary> | |
/// Löscht eine Datei vom FTP Server | |
/// </summary> | |
/// <param name="remoteFolder">Zielverzeichnis</param> | |
/// <param name="fileInfo">Datei</param> | |
public void DeleteFile(string remoteFolder, FileInfo fileInfo) | |
{ | |
try | |
{ | |
FtpWebRequest ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + Adress + "/" + remoteFolder + "/" + fileInfo.Name)); | |
ftpWebRequest.UseBinary = true; | |
ftpWebRequest.Credentials = new NetworkCredential(User, Password); | |
ftpWebRequest.Method = WebRequestMethods.Ftp.DeleteFile; | |
ftpWebRequest.Proxy = null; | |
ftpWebRequest.KeepAlive = false; | |
ftpWebRequest.UsePassive = false; | |
ftpWebRequest.GetResponse(); | |
} | |
catch (Exception) | |
{ | |
throw; | |
} | |
} | |
/// <summary> | |
/// Löscht eine Datei vom FTP Server | |
/// </summary> | |
/// <param name="fileInfo">Datei</param> | |
public void DeleteFile(FileInfo fileInfo) | |
{ | |
DeleteFile("", fileInfo); | |
} | |
/// <summary> | |
/// Erstellt einen Order auf dem FTP Server in einem beliebigen Unterverzeichnis | |
/// </summary> | |
/// <param name="remoteFolder">Zielverzeichnis</param> | |
/// <param name="folder">Verzeichnisname</param> | |
public void CreateFolder(string remoteFolder, string folder) | |
{ | |
try | |
{ | |
FtpWebRequest ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + Adress + "/" + remoteFolder + "/" + folder)); | |
ftpWebRequest.UseBinary = true; | |
ftpWebRequest.Credentials = new NetworkCredential(User, Password); | |
ftpWebRequest.Method = WebRequestMethods.Ftp.MakeDirectory; | |
ftpWebRequest.Proxy = null; | |
ftpWebRequest.KeepAlive = false; | |
ftpWebRequest.UsePassive = false; | |
ftpWebRequest.GetResponse(); | |
} | |
catch (Exception) | |
{ | |
throw; | |
} | |
} | |
/// <summary> | |
/// Erstellt einen Ordner im Root Verzeichnis des FTP Nutzers | |
/// </summary> | |
/// <param name="folder">Verzeichnisname</param> | |
public void CreateFolder(string folder) | |
{ | |
this.CreateFolder("", folder); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment