Vinodh Muthusamy Ответов: 1

Чтобы загрузить файл с помощью SFTP в C#


Я создал код для загрузки файла на удаленный сервер SFTP, но он показывает ошибку как
"Формат данного пути не поддерживается."

я дал свой код и примеры деталей. Я уверен, что путь, который я даю, неверен, пожалуйста, исправьте меня.

мои dll файлы по SFTP является:
используя Ренси.SshNet;
используя Ренси.SshNet.По SFTP;

выборочные данные:
сервер: 192.168.1.1
remotemachine (fileZilla LocalPath):"C:\Program файлы\JSCAPE MFT Server\users\hind\scope"

public Form1()
       {
           InitializeComponent();

           source = @"E:\To_Upload\tests_example.xls";//

       destination = "sftp://scope@hind/" + @" C:\Program Files\JSCAPE MFT Server\users\hind\scope";
           host = "hind";
           username = "scope";
           password = "S@ssw0rd987";
           port = 22;
         UploadSFTPFile(host, username, password, source, destination, port);
       }


public static void UploadSFTPFile(string host, string username, string password, string sourcefile, string destinationpath, int port)
       {
           try
           {


               using (SftpClient client = new SftpClient(host, port, username, password))
               {
                   client.Connect();
                   client.ChangeDirectory(destinationpath);
                   using (FileStream fs = new FileStream(sourcefile, FileMode.Open))
                   {
                       client.BufferSize = 4 * 1024;
                       client.UploadFile(fs, Path.GetFileName(sourcefile));
                   }
               }
           }
           catch (Exception ex)
           {

               MessageBox.Show(ex.StackTrace, "UploadSFTPFile");
           }
       }


Пожалуйста, исправьте мою проблему. и как пройти SFTP путь в пункт назначения

Что я уже пробовал:

public Form1()
        {
            InitializeComponent();

            source = @"E:\To_Upload\tests_example.xls";
         
        destination = "sftp://scope@hind/" + @" C:\Program Files\JSCAPE MFT Server\users\hind\scope";
            host = "hind";
            username = "scope";
            password = "S@ssw0rd987";
            port = 22;  
          UploadSFTPFile(host, username, password, source, destination, port);
        }


 public static void UploadSFTPFile(string host, string username, string password, string sourcefile, string destinationpath, int port)
        {
            try
            {


                using (SftpClient client = new SftpClient(host, port, username, password))
                {
                    client.Connect();
                    client.ChangeDirectory(destinationpath);
                    using (FileStream fs = new FileStream(sourcefile, FileMode.Open))
                    {
                        client.BufferSize = 4 * 1024;
                        client.UploadFile(fs, Path.GetFileName(sourcefile));
                    }
                }
            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.StackTrace, "UploadSFTPFile");
            }
        }

Richard MacCutchan

Сообщение совершенно ясно, путь, который вы дали, находится в формате, который не поддерживается хостом SFTP. Скорее всего, ему нужен путь в стиле UNIX. Проверьте документацию, чтобы убедиться.

DanDanTheCodingMan

Это отлично работало для небольшого файла,но не для одного 190K... Любые идеи о том, почему это не удалось .. Нет сообщения об ошибке, но файл никогда не попадает на FTP-сайт.

1 Ответов

Рейтинг:
0

Dave Kreskowiak

Смысл ясен.

Вы не можете указать путь к нужной папке на сервере. Вы можете указать только те пути, которые находятся в "домашнем" каталоге сервера. Это не может начинаться с буквы диска. Если вы укажете только имя файла, оно появится в корневой папке "home" сервера.

У вас нет доступа к любому произвольному пути на сервере, который вы хотите, только к тому, что доступно сервером.