Using FTP in C#
public class YourFileType
{
public Stream Value { get; set; }
public string Name { get; set; }
public DeductionFileType Extension { get; set; }
public YourFileType(Stream value, string name)
{
Value = value;
Name = name;
Extension = GetFileType();
}
private YourFileExtension GetFileExtension()
{
var extension = Path.GetExtension(Name);
switch (extension)
{
case (".xls"):
return YourFileExtension.Excel97;
case (".xlsx"):
return YourFileExtension.Excel2007;
}
return YourFileExtension.None;
}
}
public enum YourFileExtension
{
Excel2007, Excel97, None
}
public interface IStreamWrapper
{
void CopyTo(YourFileType file, string filePath);
byte[] ReadFile(string filePath);
}
//C#, FTP, IO
public class FtpStreamWrapper : IStreamWrapper
{
private readonly IFtpClient ftpClient;
public FtpStreamWrapper(IFtpClient ftpClient)
{
this.ftpClient = ftpClient;
}
public void CopyTo(YourFileType file, string filePath)
{
try
{
ftpClient.Upload(file.Value, filePath);
}
catch (Exception e)
{
throw new FileSaveFailedException(e);
}
}
public byte[] ReadFile(string filePath)
{
try
{
return ftpClient.Download(filePath);
}
catch (Exception e)
{
throw new FileReadFailedException(e);
}
}
}