C# SFTP upload files

后端 未结 2 1280
[愿得一人]
[愿得一人] 2021-01-31 05:27

I am trying to upload files to a linux server but I am getting an error saying: \"Unable to connect to the remote server\". I dont know if my code is wrong or the

相关标签:
2条回答
  • 2021-01-31 05:36

    What you are trying to do here is to establish a FTPS connection which is not a SFTP connection. The EnableSsl option only activates FTP over TLS (so FTPS). It uses Port 21 to connect to the server.

    If you really have activated SFTP in FileZilla, you have to use an SSH connection on port 22 to connect to the server (SFTP = SSH File Transfer Protocol). The easiest method to obtain this should be using SharpSSH.

    You can also take a look into this question.

    0 讨论(0)
  • 2021-01-31 05:40

    The best library/NuGet Package that I found was SSH.NET by Renci. Open up Nuget Package Manager and install this into your project.

    The upload can be done with a stored file or a byte[] file.


    Upload byte[] file

    // you could pass the host, port, usr, and pass as parameters
    public void FileUploadSFTP()
    {
        var host = "whateverthehostis.com";
        var port = 22;
        var username = "username";
        var password = "passw0rd";
        
        // http://stackoverflow.com/questions/18757097/writing-data-into-csv-file/39535867#39535867
        byte[] csvFile = DownloadCSV(); // Function returns byte[] csv file
    
        using (var client = new SftpClient(host, port, username, password))
        {
            client.Connect();
            if (client.IsConnected)
            {
                Debug.WriteLine("I'm connected to the client");
    
                using (var ms = new MemoryStream(csvFile))
                {
                    client.BufferSize = (uint)ms.Length; // bypass Payload error large files
                    client.UploadFile(ms, GetListFileName());
                }
            }
            else
            {
                Debug.WriteLine("I couldn't connect");
            }
        }
    }
    

    Upload From a Stored File

    This was the site that I used as a resource to get me started: http://blog.deltacode.be/2012/01/05/uploading-a-file-using-sftp-in-c-sharp/

    It's written for uploading files.

    // you could pass the host, port, usr, pass, and uploadFile as parameters
    public void FileUploadSFTP()
    {
        var host = "whateverthehostis.com";
        var port = 22;
        var username = "username";
        var password = "passw0rd";
    
        // path for file you want to upload
        var uploadFile = @"c:yourfilegoeshere.txt"; 
    
        using (var client = new SftpClient(host, port, username, password))
        {
            client.Connect();
            if (client.IsConnected)
            {
                Debug.WriteLine("I'm connected to the client");
    
                using (var fileStream = new FileStream(uploadFile, FileMode.Open))
                {
                    
                    client.BufferSize = 4 * 1024; // bypass Payload error large files
                    client.UploadFile(fileStream, Path.GetFileName(uploadFile));
                }
            }
            else
            {
                Debug.WriteLine("I couldn't connect");
            }
        }
    }
    

    Hopefully this is helpful for anyone trying to upload a file using SFTP in C#.

    0 讨论(0)
提交回复
热议问题