skynyrd
9/20/2016 - 1:23 PM

Using FTP in C#

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);
        }
    }
}