/// <summary> /// Downloads the file the user selects /// </summary> /// <param name="hostName"></param> /// <param name="userName"></param> /// <param name="password"></param> /// <param name="fileToDownload"></param> /// <param name="port"></param> public void DownloadSelectedFile(string hostName, string userName, string password, string fileToDownload, int port) { try { ToggleProgressBar?.Invoke(this, true); var request = (FtpWebRequest)WebRequest.Create(new Uri(string.Format($"ftp://{hostName}/{fileToDownload}"))); request.Method = WebRequestMethods.Ftp.DownloadFile; request.Credentials = new NetworkCredential(userName, password); var response = (FtpWebResponse)request.GetResponse(); var responseStream = response.GetResponseStream(); var reader = new StreamReader(responseStream); Console.WriteLine(reader.ReadToEnd()); Console.WriteLine($"Download complete. Status: {response.StatusDescription}"); reader.Close(); response.Close(); ToggleProgressBar?.Invoke(this, false); } catch (Exception e) { Console.WriteLine($"Exception thrown in DownloadSelectedFile(): {e.Message}, {e.StackTrace}"); ToggleProgressBar?.Invoke(this, false); } }
/// <summary> /// Downloads the file the user selects /// </summary> /// <param name="hostName"></param> /// <param name="userName"></param> /// <param name="password"></param> /// <param name="fileToDownload"></param> /// <param name="port"></param> public bool DownloadSelectedFile(string hostName, string userName, string password, List <string> fileToDownload, int port) { try { bool isValidIp = IPAddress.TryParse(hostName, out IPAddress ipAddress); if (!isValidIp && !hostName.ToLower().Equals("localhost")) { throw new Exception("invalid hostname/IP"); } if (fileToDownload.Count == 0) { MessageBox.Show("Please select a file(s) to download"); return(false); } foreach (var singleFile in fileToDownload) { try { ToggleProgressBar?.Invoke(this, true); var request = (FtpWebRequest)WebRequest.Create(new Uri(string.Format($"ftp://{hostName}/{singleFile}"))); request.Method = WebRequestMethods.Ftp.DownloadFile; request.Credentials = new NetworkCredential(userName, password); var response = (FtpWebResponse)request.GetResponse(); var responseStream = response.GetResponseStream(); var reader = new StreamReader(responseStream); Console.WriteLine(reader.ReadToEnd()); Console.WriteLine($"Download complete. Status: {response.StatusDescription}"); reader.Close(); response.Close(); ToggleProgressBar?.Invoke(this, false); } catch (Exception e) { Console.WriteLine($"Exception thrown in DownloadSelectedFile(): {e.Message}, {e.StackTrace}"); ToggleProgressBar?.Invoke(this, false); return(false); } } return(true); } catch (Exception e) { Console.WriteLine(e.Message, e.StackTrace, e?.InnerException); ToggleProgressBar?.Invoke(this, false); return(false); } }
/// <summary> /// Uploads the file the user selects /// </summary> /// <param name="HostName"></param> /// <param name="UserName"></param> /// <param name="Password"></param> /// <param name="FileToUpload"></param> /// <param name="Port"></param> public void UploadSelectedFile(string HostName, string UserName, string Password, string FileToUpload, int Port) { double percentage = 0; try { ToggleProgressBar?.Invoke(this, true); string file = Path.GetFileName(FileToUpload); FtpWebRequest request = (FtpWebRequest)WebRequest.Create(new Uri(string.Format($"ftp://{HostName}" + $"/{file}"))); request.Method = WebRequestMethods.Ftp.UploadFile; request.Credentials = new NetworkCredential(UserName, Password); Stream ftpStream = request.GetRequestStream(); FileStream fStream = File.OpenRead(FileToUpload); byte[] buffer = new byte[1024]; int byteRead = 0; double read = 0; double size = (double)fStream.Length; do { byteRead = fStream.Read(buffer, 0, 1024); ftpStream.Write(buffer, 0, byteRead); read += (double)byteRead; percentage = read / size * 100; //Progress percentage. }while (byteRead != 0); fStream.Close(); ftpStream.Close(); ToggleProgressBar?.Invoke(this, false); return; } catch (Exception e) { Console.WriteLine(e.Message, e.StackTrace, e?.InnerException); ToggleProgressBar?.Invoke(this, false); } }
/// <summary> /// Uploads the file the user selects /// </summary> /// <param name="HostName"></param> /// <param name="UserName"></param> /// <param name="Password"></param> /// <param name="FileToUpload"></param> /// <param name="Port"></param> public bool UploadSelectedFile(string HostName, string UserName, string Password, List <string> FileToUpload, int Port, bool AbortClient) { try { bool isValidIp = IPAddress.TryParse(HostName, out IPAddress ipAddress); if (!isValidIp && !HostName.ToLower().Equals("localhost")) { throw new Exception("invalid hostname/IP"); } if (FileToUpload.Count == 0) { MessageBox.Show("Please select a file(s) to upload."); return(false); } foreach (var singleFile in FileToUpload) { double percentage = 0; try { ToggleProgressBar?.Invoke(this, true); string file = Path.GetFileName(singleFile); FtpWebRequest request = (FtpWebRequest)WebRequest.Create(new Uri(string.Format($"ftp://{HostName}" + $"/{file}"))); if (AbortClient == true) { request.Abort(); } FtpWebRequest request1 = (FtpWebRequest)WebRequest.Create(new Uri(string.Format($"ftp://{HostName}" + $"/{file}"))); request1.Method = WebRequestMethods.Ftp.UploadFile; request1.Credentials = new NetworkCredential(UserName, Password); Stream ftpStream = request1.GetRequestStream(); FileStream fStream = File.OpenRead(singleFile); byte[] buffer = new byte[1024]; int byteRead = 0; double read = 0; double size = (double)fStream.Length; do { byteRead = fStream.Read(buffer, 0, 1024); ftpStream.Write(buffer, 0, byteRead); read += (double)byteRead; percentage = read / size * 100; //Progress percentage. } while (byteRead != 0); fStream.Close(); ftpStream.Close(); ToggleProgressBar?.Invoke(this, false); } catch (Exception e) { Console.WriteLine(e.Message, e.StackTrace, e?.InnerException); ToggleProgressBar?.Invoke(this, false); return(false); } } return(true); } catch (Exception e) { Console.WriteLine(e.Message, e.StackTrace, e?.InnerException); ToggleProgressBar?.Invoke(this, false); return(false); } }
/// <summary> /// Default constructor, sets ToggleProgressBar to false initially /// </summary> public FTPClientModel() { ToggleProgressBar?.Invoke(this, false); }