C# SFTP upload files

后端 未结 2 1282
[愿得一人]
[愿得一人] 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: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#.

提交回复
热议问题