Advertisement
Guest User

Untitled

a guest
Feb 10th, 2016
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.62 KB | None | 0 0
  1. //
  2. //
  3. // Ftp File Helper
  4. //
  5. //
  6. //Funktionen:
  7. //CheckConnection
  8. //UploadFile
  9. //GetFileList
  10. //DownloadFile
  11. //DeleteFile
  12. //CreateFolder
  13. using System;
  14. using System.Collections.Generic;
  15. using System.Linq;
  16. using System.Text;
  17. using System.Net;
  18. using System.IO;
  19. using System.Threading;
  20.  
  21. class FtpHelper
  22. {
  23. #region Properties
  24.  
  25. public string Adress { get; set; }
  26. public string User { get; set; }
  27. public string Password { get; set; }
  28.  
  29. #endregion
  30.  
  31. #region Constructor
  32.  
  33. /// <summary>
  34. /// Initialisiert eine neue Instanz der FTP Helper Klasse
  35. /// </summary>
  36. /// <param name="adress">Name oder IP Adresse des Servers</param>
  37. /// <param name="user">Benutzername</param>
  38. /// <param name="password">Passwort</param>
  39. public FtpHelper(string adress, string user, string password)
  40. {
  41. this.Adress = adress;
  42. this.User = user;
  43. this.Password = password;
  44. }
  45.  
  46. #endregion
  47.  
  48. #region Events
  49.  
  50. public delegate void ReceivedFileListCompleteEventhandler();
  51. public event ReceivedFileListCompleteEventhandler ReceivedFileListComplete;
  52.  
  53. #endregion
  54.  
  55. /// <summary>
  56. /// Überprüft ob eine Verbindung zum FTP Server besteht
  57. /// </summary>
  58. public void CheckConnection()
  59. {
  60. try
  61. {
  62. FtpWebRequest.DefaultWebProxy = null;
  63. FtpWebRequest ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + this.Adress + "/"));
  64. ftpWebRequest.Credentials = new NetworkCredential(this.User, this.Password);
  65.  
  66. //Als Methode muss ListDirectory gewählt werden!
  67. ftpWebRequest.Method = WebRequestMethods.Ftp.ListDirectory;
  68.  
  69. WebResponse webResponse = ftpWebRequest.GetResponse();
  70. }
  71. catch (Exception)
  72. {
  73. throw;
  74. }
  75. }
  76.  
  77. /// <summary>
  78. /// Lädt Dateien auf einen FTP Server
  79. /// </summary>
  80. /// <param name="remoteFolder">Zielverzeichnis</param>
  81. /// <param name="fileInfo"></param>
  82. public void UploadFile(string remoteFolder, FileInfo fileInfo)
  83. {
  84. try
  85. {
  86. FtpWebRequest request = (FtpWebRequest)WebRequest.Create(new Uri("ftp://" + Adress + "/" + remoteFolder + "/" + fileInfo.Name));
  87.  
  88. request.Method = WebRequestMethods.Ftp.UploadFile;
  89.  
  90. request.Credentials = new NetworkCredential(User, Password);
  91.  
  92. Stream ftpStream = request.GetRequestStream();
  93.  
  94. FileStream file = File.OpenRead(fileInfo.FullName);
  95.  
  96. int length = 1024;
  97. byte[] buffer = new byte[length];
  98. int bytesRead = 0;
  99.  
  100. do
  101. {
  102. bytesRead = file.Read(buffer, 0, length);
  103. ftpStream.Write(buffer, 0, bytesRead);
  104. }
  105. while (bytesRead != 0);
  106.  
  107. file.Close();
  108. ftpStream.Close();
  109. }
  110. catch (WebException)
  111. {
  112. throw;
  113. }
  114. }
  115.  
  116. /// <summary>
  117. /// Lädt Dateien auf einen FTP Server
  118. /// </summary>
  119. /// <param name="fileInfo"></param>
  120. public void UploadFile(FileInfo fileInfo)
  121. {
  122. this.UploadFile("", fileInfo);
  123. }
  124.  
  125. /// <summary>
  126. /// Liefert eine Liste von Dateien zurück, die sich in einem bestimmten Verzeichnis auf dem Server befinden
  127. /// </summary>
  128. /// <returns></returns>
  129. public List<string> GetFileList(string remoteFolder)
  130. {
  131. FtpWebRequest ftpWebRequest = (FtpWebRequest)WebRequest.Create("ftp://" + Adress + "/" + remoteFolder);
  132. ftpWebRequest.Method = WebRequestMethods.Ftp.ListDirectory;
  133.  
  134. WebResponse webResponse = null;
  135.  
  136. ftpWebRequest.Credentials = new NetworkCredential(User, Password);
  137.  
  138. try
  139. {
  140. webResponse = ftpWebRequest.GetResponse();
  141. }
  142. catch (Exception)
  143. {
  144. throw;
  145. }
  146.  
  147. List<string> files = new List<string>();
  148.  
  149. StreamReader streamReader = new StreamReader(webResponse.GetResponseStream());
  150.  
  151. while (!streamReader.EndOfStream)
  152. {
  153. files.Add(streamReader.ReadLine());
  154. }
  155.  
  156. streamReader.Close();
  157.  
  158. webResponse.Close();
  159.  
  160. return files;
  161. }
  162.  
  163. /// <summary>
  164. /// Liefert eine Liste von Dateien zurück
  165. /// </summary>
  166. /// <returns></returns>
  167. public List<string> GetFileList()
  168. {
  169. return this.GetFileList("");
  170. }
  171.  
  172. /// <summary>
  173. /// Lädt eine Datei vom FTP Server herunter
  174. /// </summary>
  175. public void DownloadFile(string remoteFolder, FileInfo file, string destinationFolder, FileInfo destinationFile)
  176. {
  177. try
  178. {
  179. WebClient webClient = new WebClient();
  180.  
  181. webClient.Credentials = new NetworkCredential(User, Password);
  182.  
  183. byte[] data = webClient.DownloadData(new Uri("ftp://" + Adress + "/" + remoteFolder + "/" + file.Name));
  184.  
  185. FileStream fileStream = File.Create(destinationFolder + @"\" + destinationFile);
  186.  
  187. fileStream.Write(data, 0, data.Length);
  188.  
  189. fileStream.Close();
  190. }
  191. catch (WebException)
  192. {
  193. throw;
  194. }
  195. }
  196.  
  197. /// <summary>
  198. /// Lädt eine Datei vom FTP Server herunter
  199. /// </summary>
  200. /// <param name="file"></param>
  201. /// <param name="destinationFolder"></param>
  202. /// <param name="destinationFile"></param>
  203. public void DownloadFile(FileInfo file, string destinationFolder, FileInfo destinationFile)
  204. {
  205. this.DownloadFile("", file, destinationFolder, destinationFile);
  206. }
  207.  
  208. /// <summary>
  209. /// Löscht eine Datei vom FTP Server
  210. /// </summary>
  211. /// <param name="remoteFolder">Zielverzeichnis</param>
  212. /// <param name="fileInfo">Datei</param>
  213. public void DeleteFile(string remoteFolder, FileInfo fileInfo)
  214. {
  215. try
  216. {
  217. FtpWebRequest ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + Adress + "/" + remoteFolder + "/" + fileInfo.Name));
  218. ftpWebRequest.UseBinary = true;
  219. ftpWebRequest.Credentials = new NetworkCredential(User, Password);
  220. ftpWebRequest.Method = WebRequestMethods.Ftp.DeleteFile;
  221. ftpWebRequest.Proxy = null;
  222. ftpWebRequest.KeepAlive = false;
  223. ftpWebRequest.UsePassive = false;
  224. ftpWebRequest.GetResponse();
  225. }
  226. catch (Exception)
  227. {
  228. throw;
  229. }
  230. }
  231.  
  232. /// <summary>
  233. /// Löscht eine Datei vom FTP Server
  234. /// </summary>
  235. /// <param name="fileInfo">Datei</param>
  236. public void DeleteFile(FileInfo fileInfo)
  237. {
  238. DeleteFile("", fileInfo);
  239. }
  240.  
  241. /// <summary>
  242. /// Erstellt einen Order auf dem FTP Server in einem beliebigen Unterverzeichnis
  243. /// </summary>
  244. /// <param name="remoteFolder">Zielverzeichnis</param>
  245. /// <param name="folder">Verzeichnisname</param>
  246. public void CreateFolder(string remoteFolder, string folder)
  247. {
  248. try
  249. {
  250. FtpWebRequest ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + Adress + "/" + remoteFolder + "/" + folder));
  251. ftpWebRequest.UseBinary = true;
  252. ftpWebRequest.Credentials = new NetworkCredential(User, Password);
  253. ftpWebRequest.Method = WebRequestMethods.Ftp.MakeDirectory;
  254. ftpWebRequest.Proxy = null;
  255. ftpWebRequest.KeepAlive = false;
  256. ftpWebRequest.UsePassive = false;
  257. ftpWebRequest.GetResponse();
  258. }
  259. catch (Exception)
  260. {
  261. throw;
  262. }
  263. }
  264.  
  265. /// <summary>
  266. /// Erstellt einen Ordner im Root Verzeichnis des FTP Nutzers
  267. /// </summary>
  268. /// <param name="folder">Verzeichnisname</param>
  269. public void CreateFolder(string folder)
  270. {
  271. this.CreateFolder("", folder);
  272. }
  273. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement