Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- //
- // 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);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement