Как, с помощью C#, по FTP редактировать, удалять, переименовывать файлы и папки??

Evgeny

Client
Регистрация
01.03.2012
Сообщения
127
Благодарностей
12
Баллы
18
Пробую на хостингере переименовать файл, и там же удалить, и там же редактировать..
Обычным способом там ничего не работает, нашел тут http://zennolab.com/discussion/threads/zalivka-papki-po-ftp-i-xostinger.15327/ , но тут просто заливка файлов. А мне нужно удалить редактировать и переименовать
Помогите пожалуйста
 

sparsa

Новичок
Регистрация
13.08.2014
Сообщения
13
Благодарностей
1
Баллы
3
Для работы с ftp я использую bat (подключаю через вызов программы)
Файлик занимает несколько строк.

Подробнее о bat командах можешь почитать тут:
http://www.cyberforum.ru/cmd-bat/thread680829.html
 
  • Спасибо
Реакции: Evgeny

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
786
Баллы
113
  • Спасибо
Реакции: Evgeny

Evgeny

Client
Регистрация
01.03.2012
Сообщения
127
Благодарностей
12
Баллы
18
Спасибо, половину дел сделал )
Вот теперь проблемка, мне надо посмотреть список файлов в директории на фтп
нашел https://help.zennolab.com/en/v5/zennoposter/5.7/ZennoLab.CommandCenter~ZennoLab.CommandCenter.ZennoPoster~FtpGetList.html

Но он мне выдает просто ОК, а не список :-)
Как мне вытащить список файлов в директории и положить в переменную?
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 100
Баллы
113
Но он мне выдает просто ОК, а не список :-)
Как мне вытащить список файлов в директории и положить в переменную?
Добавьте в конец кода
Код:
{
    project.Lists["Список"].Add(file);
}
Данные добавятся в список, оттуда берите в переменную.
 
  • Спасибо
Реакции: Evgeny

Evgeny

Client
Регистрация
01.03.2012
Сообщения
127
Благодарностей
12
Баллы
18
А в ["Список"] писать просто название списка? или тут переменную надо ставить ?
 
Последнее редактирование:

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 100
Баллы
113
  • Спасибо
Реакции: Evgeny

Evgeny

Client
Регистрация
01.03.2012
Сообщения
127
Благодарностей
12
Баллы
18

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 100
Баллы
113
  • Спасибо
Реакции: izubr и Evgeny

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 218
Благодарностей
5 843
Баллы
113

Evgeny

Client
Регистрация
01.03.2012
Сообщения
127
Благодарностей
12
Баллы
18
да есть, но они не правильно работают на некоторыъ хостингах. С# выручает.
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 218
Благодарностей
5 843
Баллы
113

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28
Вот сегодня тоже столкнулся с экшеном зенки FTP: нужно удалить файл или папку по фтп - не работает :(
Загружать загружает, но не стирает.
P.S. SFTP вообще не пашет.
 

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28
Кто знает, что не так в коде, почему не удаляет папку?

Код:
ZennoPoster.FtpDeleteDirectory(project.Variables["ftphost"].Value, 21, "FTP", project.Variables["ftpuser"].Value, project.Variables["ftppass"].Value, "", project.Variables["ftpputh"].Value);
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 218
Благодарностей
5 843
Баллы
113
Кто знает, что не так в коде, почему не удаляет папку?

Код:
ZennoPoster.FtpDeleteDirectory(project.Variables["ftphost"].Value, 21, "FTP", project.Variables["ftpuser"].Value, project.Variables["ftppass"].Value, "", project.Variables["ftpputh"].Value);
Вы уверены, что это в коде проблема? Права на удаление файла есть?
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 218
Благодарностей
5 843
Баллы
113
Вот сегодня тоже столкнулся с экшеном зенки FTP: нужно удалить файл или папку по фтп - не работает :(
Загружать загружает, но не стирает.
P.S. SFTP вообще не пашет.
Что пишет лог? - В Project Maker>Окна>Лог
 

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28
Права поставил 0777, но не удаляет, ни снипетом, ни экшеном.
Переделал логику шаба, теперь вроде и не надо, но осадок остался.

P.S. Снипет без ошибок отыгрывает (при этом не удаляет), а экшен что-то про ошибку фтп пишет.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 706
Баллы
113
Тоже один раз ловил баг sftp на машине клиента но к сожалению нет доступа. можете организовать тестовый аккаунт на вашем серваке для теста?
 

Roman*

Client
Регистрация
25.09.2013
Сообщения
1 649
Благодарностей
653
Баллы
113
Тоже один раз ловил баг sftp на машине клиента но к сожалению нет доступа. можете организовать тестовый аккаунт на вашем серваке для теста?
Столкнулся с проблемой заливки папок и файлов в категорию по sftp -не пашет, как ни крути, вчера удаляло еще, сегодня же уже нет(((. Подскажите,что делать? Думал, путь не верен, оказалось баг, просто не видит путь или файл.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 706
Баллы
113
Пример пришлите на почту саппорта, это нужно показывать программисту, который писал этот модуль.
 
Регистрация
03.12.2012
Сообщения
187
Благодарностей
89
Баллы
28
Пример заливки файла через SFTP с использованием файла ключа.
Использую эту либу http://winscp.net/eng/docs/library.

Код:
//Загрузка через SFTP
  SessionOptions sessionOptions = new SessionOptions
  {
  Protocol = Protocol.Sftp,
  HostName = "site.com",
  UserName = "admin"
  ,
  SshPrivateKeyPassphrase = "pass"//Это параль на файл ключей, а не на доступ
  ,
  SshPrivateKeyPath = @"C:\Users\admin\Documents\MyWebSites\key.ppk"
  ,
  GiveUpSecurityAndAcceptAnySshHostKey = true
  //,Password = "",
  //SshHostKeyFingerprint = "ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"
  };

  using (Session session = new Session())
  {
  // Открываем соеденение
  session.Open(sessionOptions);  
  
  // Аплоад файла
  TransferOptions transferOptions = new TransferOptions();
  transferOptions.TransferMode = TransferMode.Binary;
  // Задаем путь к сайту
  string strPathRemoutDirectory = session.HomePath + "/site.com/";

  TransferOperationResult transferResult;
  // Залив
  transferResult = session.PutFiles("c:\test.html", strPathRemoutDirectory + "test.html", true, transferOptions);

  // Чекаем на баги
  transferResult.Check();

  // Можноудалитьнах
  foreach (TransferEventArgs transfer in transferResult.Transfers)
  {
  Console.WriteLine("Upload of {0} succeeded", transfer.FileName);
  }
  }
 
  • Спасибо
Реакции: rostonix

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 706
Баллы
113
По последнему примеру который прислали там есть проблема с правами на папки. Поэтому не пашет
 

Roman*

Client
Регистрация
25.09.2013
Сообщения
1 649
Благодарностей
653
Баллы
113
Gj njve
По последнему примеру который прислали там есть проблема с правами на папки. Поэтому не пашет
По тому что дармидонт прислал проблема? Я отписал в саппорт и проект приложил с доступом к впске, надеюсь помогут,срочно уже.Дармидонт, а что за файл ключей,где его брать?
 
Последнее редактирование:
Регистрация
03.12.2012
Сообщения
187
Благодарностей
89
Баллы
28
а что за файл ключей,где его брать?
Это все настраиваешь сам на своем впс.
Есть два вида соединение по SFTP через файл ключей - SSH подключение генерируется как обычно putty. Считается яко тру безопасно.
И обыкновенное логин пароль.

Код:
SessionOptions sessionOptions = new SessionOptions
            {
                Protocol = Protocol.Sftp,
                HostName = "example.com",
                UserName = "user",
                Password = "mypassword",
GiveUpSecurityAndAcceptAnySshHostKey = true
            };
Либа подходит под любые настройки, протестирована на разных хостах. Все гуд. Проблем не было летаеть. Все описано в доках.
 
  • Спасибо
Реакции: Roman*

Batareikin

Client
Регистрация
19.02.2015
Сообщения
10
Благодарностей
2
Баллы
3
Ром, сделано именно так и все работает, как написал Дормидонт.
Ключ тебе не нужен сейчас. Он автоматом подхватывается: GiveUpSecurityAndAcceptAnySshHostKey=true
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 706
Баллы
113
Gj njve

По тому что дармидонт прислал проблема? Я отписал в саппорт и проект приложил с доступом к впске, надеюсь помогут,срочно уже.Дармидонт, а что за файл ключей,где его брать?
ответил на тикет
 

Roman*

Client
Регистрация
25.09.2013
Сообщения
1 649
Благодарностей
653
Баллы
113
Ром, сделано именно так и все работает, как написал Дормидонт.
Ключ тебе не нужен сейчас. Он автоматом подхватывается: GiveUpSecurityAndAcceptAnySshHostKey=true
А можешь для некодера обьяснить, все что написанно, нужно вставить в сишарп кубик и будет работать, заполнив данные? и что мне делать с
,

SshPrivateKeyPassphrase = "pass"//Это параль на файл ключей, а не на доступ

,

SshPrivateKeyPath = @"C:\Users\admin\Documents\MyWebSites\key.ppk"

P.S. Ростоникс, ответь плиз в личке, данные для входа были верны.
 

Batareikin

Client
Регистрация
19.02.2015
Сообщения
10
Благодарностей
2
Баллы
3
А можешь для некодера обьяснить, все что написанно, нужно вставить в сишарп кубик и будет работать, заполнив данные? и что мне делать с
,

SshPrivateKeyPassphrase = "pass"//Это параль на файл ключей, а не на доступ

,

SshPrivateKeyPath = @"C:\Users\admin\Documents\MyWebSites\key.ppk"

P.S. Ростоникс, ответь плиз в личке, данные для входа были верны.
Ром, я тебе готовый шаблон дал. Вбей только параметры основные - адрес, логин и пароль - все то, что ты используешь в FileZilla.
Никаких ключей тебе не надо указывать.

Вообщем, голосом и по расшаренному экрану обьясню в пару минут. В код шарпа вообще лезть не надо :-)
 

ChuckNorris

Client
Регистрация
10.01.2018
Сообщения
43
Благодарностей
7
Баллы
8
подскажите как получить список, уже все перепробовал, не работает, использую вот этот код:
Код:
var list = new System.Collections.Generic.List<string>(ZennoPoster.FtpGetList(project.Variables["host"].Value, 21, project.Variables["username"].Value, project.Variables["pass"].Value, "", false, false));
что нужно еще дописать что бы получить список?
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)