/// <summary> /// Downlaods a file. /// </summary> /// <param name="serverConfiguration">The ftp server configuration</param> /// <param name="filename">The filename</param> /// <returns></returns> public byte[] DownloadFile(FtpServerConfiguration serverConfiguration, string filename) { if (serverConfiguration == null) { throw new ArgumentNullException(nameof(serverConfiguration)); } if (string.IsNullOrWhiteSpace(filename)) { throw new ArgumentOutOfRangeException("Argument filename must not be null or whitespace"); } using (var client = new FtpClient(serverConfiguration.URI, serverConfiguration.Username, serverConfiguration.Password)) { client.Connect(); using (var res = new MemoryStream()) { if (!client.Download(res, filename)) { LogManagerInstance.Instance.Error($"Could not download file `{filename}` for ftp server {serverConfiguration.InternalName}/{serverConfiguration.URI}"); return(null); } res.Position = 0; return(res.ToArray()); } } }
/// <summary> /// Renames a file. /// </summary> /// <param name="serverConfiguration">The ftp server configuration</param> /// <param name="filename">The filename</param> /// <param name="newFilename">The new filename</param> /// <returns></returns> public bool RenameFile(FtpServerConfiguration serverConfiguration, string filename, string newFilename) { if (serverConfiguration == null) { throw new ArgumentNullException(nameof(serverConfiguration)); } if (string.IsNullOrWhiteSpace(filename)) { throw new ArgumentOutOfRangeException("Argument filename must not be null or whitespace"); } if (string.IsNullOrWhiteSpace(newFilename)) { throw new ArgumentOutOfRangeException("Argument newFilename must not be null or whitespace"); } using (var client = new FtpClient(serverConfiguration.URI, serverConfiguration.Username, serverConfiguration.Password)) { client.Connect(); client.Rename(filename, newFilename); } return(true); }
/// <summary> /// Uploads a file. /// </summary> /// <param name="serverConfiguration">The ftp server configuation</param> /// <param name="file">The file</param> /// <param name="path">The path</param> /// <param name="fileName">The filename</param> /// <returns></returns> public bool UploadFile(FtpServerConfiguration serverConfiguration, byte[] file, string path, string fileName) { if (serverConfiguration == null) { throw new ArgumentNullException(nameof(serverConfiguration)); } if (string.IsNullOrWhiteSpace(fileName)) { throw new ArgumentOutOfRangeException("Argument filename must not be null or whitespace"); } if (file == null) { throw new ArgumentNullException(nameof(file)); } using (var client = new FtpClient(serverConfiguration.URI, serverConfiguration.Username, serverConfiguration.Password)) { client.Connect(); if (!client.DirectoryExists(path)) { client.CreateDirectory(path); } client.SetWorkingDirectory(path); client.Upload(file, fileName); } return(true); }
/// <summary> /// Uploads a file. /// </summary> /// <param name="serverConfiguration">The ftp server configuration</param> /// <param name="file">The file</param> /// <param name="path">The path</param> /// <param name="fileName">The file name</param> /// <returns></returns> public bool UploadFile(FtpServerConfiguration serverConfiguration, byte[] file, string path, string fileName) { if (!path.EndsWith("/")) { path = path + "/"; } if (!path.StartsWith("/")) { path = "/" + path; } if (fileName.StartsWith("/")) { fileName = fileName.Substring(1, fileName.Length - 1); } var filepath = path + fileName; Console.WriteLine($"Begin SSH.Net upload to {serverConfiguration.URI}{filepath}"); using (SftpClient sftp = new SftpClient(serverConfiguration.URI, serverConfiguration.Username, serverConfiguration.Password)) { if (serverConfiguration.Timeout != 0) { sftp.OperationTimeout = TimeSpan.FromMilliseconds(serverConfiguration.Timeout); } sftp.Connect(); using (var stream = new MemoryStream(file)) { stream.Position = 0; sftp.UploadFile(stream, filepath, true); } sftp.Disconnect(); } return(true); }
/// <summary> /// Gets the directory content. /// </summary> /// <param name="serverConfiguration">The ftp server configuration.</param> /// <param name="directory">The directory</param> /// <returns></returns> public IList <string> GetDirectoryContent(FtpServerConfiguration serverConfiguration, string directory) { if (!serverConfiguration.URI.EndsWith("/") && !directory.StartsWith("/")) { directory = "/" + directory; } var request = (FtpWebRequest)WebRequest.Create(serverConfiguration.URI + directory); request.Method = WebRequestMethods.Ftp.ListDirectoryDetails; request.UsePassive = serverConfiguration.UsePassive; request.Credentials = new NetworkCredential(serverConfiguration.Username, serverConfiguration.Password); if (serverConfiguration.Timeout != 0) { request.Timeout = serverConfiguration.Timeout; } var response = request.GetResponse(); var stream = response.GetResponseStream(); var reader = new StreamReader(stream); var dir = new List <string>(); while (reader.Peek() >= 0) { dir.Add(reader.ReadLine()); } return(dir); }
/// <summary> /// Uploads a file. /// </summary> /// <param name="serverConfiguration">The ftp server configuation</param> /// <param name="file">The file</param> /// <param name="path">The path</param> /// <param name="fileName">The filename</param> /// <returns></returns> public bool UploadFile(FtpServerConfiguration serverConfiguration, byte[] file, string path, string fileName) { if (file == null) { throw new Exception(""); } var uri = serverConfiguration.URI.Trim(); if (!string.IsNullOrWhiteSpace(fileName)) { path = path ?? "/"; fileName = fileName ?? ""; path = path.Trim(); fileName = fileName.Trim(); if (!path.EndsWith("/")) { path = path + "/"; } if (!path.StartsWith("/")) { path = "/" + path; } if (fileName.StartsWith("/")) { fileName = fileName.Substring(1, fileName.Length - 1); } if (uri.EndsWith("/")) { uri = uri.Substring(0, uri.Length - 1); } } var request = (FtpWebRequest)WebRequest.Create(uri + path + fileName); request.Method = WebRequestMethods.Ftp.UploadFile; request.Credentials = new NetworkCredential(serverConfiguration.Username, serverConfiguration.Password); request.ContentLength = file.Length; request.UsePassive = serverConfiguration.UsePassive; request.UseBinary = true; if (serverConfiguration.Timeout != 0) { request.Timeout = serverConfiguration.Timeout; } using (Stream requestStream = request.GetRequestStream()) { requestStream.Write(file, 0, file.Length); } return(true); }
/// <summary> /// Deletes a file. /// </summary> /// <param name="serverConfiguration">The ftp server configuration</param> /// <param name="filename">The filename</param> /// <returns></returns> public bool DeleteFile(FtpServerConfiguration serverConfiguration, string filename) { using (SftpClient sftp = new SftpClient(serverConfiguration.URI, serverConfiguration.Username, serverConfiguration.Password)) { if (serverConfiguration.Timeout != 0) { sftp.OperationTimeout = TimeSpan.FromMilliseconds(serverConfiguration.Timeout); } sftp.Connect(); sftp.DeleteFile(filename); sftp.Disconnect(); } return(true); }
/// <summary> /// Gets the directory content. /// </summary> /// <param name="serverConfiguration">The ftp server configuration.</param> /// <param name="directory">The directory</param> /// <returns></returns> public IList <string> GetDirectoryContent(FtpServerConfiguration serverConfiguration, string directory) { if (serverConfiguration == null) { throw new ArgumentNullException(nameof(serverConfiguration)); } using (var client = new FtpClient(serverConfiguration.URI, serverConfiguration.Username, serverConfiguration.Password)) { client.Connect(); client.SetWorkingDirectory(directory ?? ""); return(client.GetListing().Select(x => x.FullName).ToList()); } }
/// <summary> /// Renames a file. /// </summary> /// <param name="serverConfiguration">The ftp server configuration</param> /// <param name="filename">The filename</param> /// <param name="newFilename">The new filename</param> /// <returns></returns> public bool RenameFile(FtpServerConfiguration serverConfiguration, string filename, string newFilename) { var request = (FtpWebRequest)WebRequest.Create(serverConfiguration.URI + filename); request.Method = WebRequestMethods.Ftp.Rename; request.UsePassive = serverConfiguration.UsePassive; request.Credentials = new NetworkCredential(serverConfiguration.Username, serverConfiguration.Password); if (serverConfiguration.Timeout != 0) { request.Timeout = serverConfiguration.Timeout; } request.RenameTo = newFilename; request.GetResponse(); return(true); }
/// <summary> /// Downloads a file. /// </summary> /// <param name="serverConfiguration">The ftp server configuration</param> /// <param name="filename">The filename</param> /// <returns></returns> public byte[] DownloadFile(FtpServerConfiguration serverConfiguration, string filename) { using (SftpClient sftp = new SftpClient(serverConfiguration.URI, serverConfiguration.Username, serverConfiguration.Password)) { if (serverConfiguration.Timeout != 0) { sftp.OperationTimeout = TimeSpan.FromMilliseconds(serverConfiguration.Timeout); } sftp.Connect(); using (var fs = new MemoryStream()) { sftp.DownloadFile(filename, fs); fs.Position = 0; var file = fs.ToArray(); sftp.Disconnect(); return(file); } } }
/// <summary> /// Deletes a file. /// </summary> /// <param name="serverConfiguration">The server configuration</param> /// <param name="filename">The file name</param> /// <returns></returns> public bool DeleteFile(FtpServerConfiguration serverConfiguration, string filename) { if (!serverConfiguration.URI.EndsWith("/") && !filename.StartsWith("/")) { filename = "/" + filename; } var request = (FtpWebRequest)WebRequest.Create(serverConfiguration.URI + filename); request.Method = WebRequestMethods.Ftp.DeleteFile; request.Credentials = new NetworkCredential(serverConfiguration.Username, serverConfiguration.Password); request.UsePassive = serverConfiguration.UsePassive; if (serverConfiguration.Timeout != 0) { request.Timeout = serverConfiguration.Timeout; } request.GetResponse(); return(true); }
/// <summary> /// Downlaods a file. /// </summary> /// <param name="serverConfiguration">The ftp server configuration</param> /// <param name="filename">The filename</param> /// <returns></returns> public byte[] DownloadFile(FtpServerConfiguration serverConfiguration, string filename) { if (!serverConfiguration.URI.EndsWith("/") && !filename.StartsWith("/")) { filename = "/" + filename; } var request = (FtpWebRequest)WebRequest.Create(serverConfiguration.URI + filename); request.Method = WebRequestMethods.Ftp.DownloadFile; request.Credentials = new NetworkCredential(serverConfiguration.Username, serverConfiguration.Password); request.UsePassive = serverConfiguration.UsePassive; if (serverConfiguration.Timeout != 0) { request.Timeout = serverConfiguration.Timeout; } var stream = request.GetResponse().GetResponseStream(); var streamReader = new StreamReader(stream); return(Encoding.UTF8.GetBytes(streamReader.ReadToEnd())); }
/// <summary> /// Gets the directory content. /// </summary> /// <param name="serverConfiguration">The ftp server configuration</param> /// <param name="directory">The directory</param> /// <returns></returns> public IList <string> GetDirectoryContent(FtpServerConfiguration serverConfiguration, string directory) { var filenames = new List <string>(); using (SftpClient sftp = new SftpClient(serverConfiguration.URI, serverConfiguration.Username, serverConfiguration.Password)) { if (serverConfiguration.Timeout != 0) { sftp.OperationTimeout = TimeSpan.FromMilliseconds(serverConfiguration.Timeout); } sftp.Connect(); var files = sftp.ListDirectory(directory); foreach (var file in files) { if (file.IsRegularFile) { filenames.Add(file.Name); } } sftp.Disconnect(); } return(filenames); }
/// <summary> /// Saves a ftp server configuration /// </summary> /// <param name="obj">A ftp server configuration</param> /// <returns></returns> public bool Save(FtpServerConfiguration obj) { return(ftpServerRepository.Save(obj)); }
/// <summary> /// Deletes a ftp server configuration. /// </summary> /// <param name="obj">The ftp server configuration</param> /// <returns></returns> public bool Delete(FtpServerConfiguration obj) { return(ftpServerRepository.Delete(obj)); }