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

  • Автор темы Автор темы Evgeny
  • Дата начала Дата начала

Evgeny

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

Подробнее о bat командах можешь почитать тут:
http://www.cyberforum.ru/cmd-bat/thread680829.html
 
  • Спасибо
Реакции: Evgeny
Спасибо, половину дел сделал )
Вот теперь проблемка, мне надо посмотреть список файлов в директории на фтп
нашел https://help.zennolab.com/en/v5/zen...Lab.CommandCenter.ZennoPoster~FtpGetList.html

Но он мне выдает просто ОК, а не список :)
Как мне вытащить список файлов в директории и положить в переменную?
 
Но он мне выдает просто ОК, а не список :-)
Как мне вытащить список файлов в директории и положить в переменную?
Добавьте в конец кода
Код:
Развернуть Свернуть Копировать
{
    project.Lists["Список"].Add(file);
}
Данные добавятся в список, оттуда берите в переменную.
 
  • Спасибо
Реакции: Evgeny
А в ["Список"] писать просто название списка? или тут переменную надо ставить ?
 
Последнее редактирование:
  • Спасибо
Реакции: Evgeny
  • Спасибо
Реакции: izubr и Evgeny
да есть, но они не правильно работают на некоторыъ хостингах. С# выручает.
 
Вот сегодня тоже столкнулся с экшеном зенки FTP: нужно удалить файл или папку по фтп - не работает :(
Загружать загружает, но не стирает.
P.S. SFTP вообще не пашет.
 
Кто знает, что не так в коде, почему не удаляет папку?

Код:
Развернуть Свернуть Копировать
ZennoPoster.FtpDeleteDirectory(project.Variables["ftphost"].Value, 21, "FTP", project.Variables["ftpuser"].Value, project.Variables["ftppass"].Value, "", project.Variables["ftpputh"].Value);
 
Кто знает, что не так в коде, почему не удаляет папку?

Код:
Развернуть Свернуть Копировать
ZennoPoster.FtpDeleteDirectory(project.Variables["ftphost"].Value, 21, "FTP", project.Variables["ftpuser"].Value, project.Variables["ftppass"].Value, "", project.Variables["ftpputh"].Value);
Вы уверены, что это в коде проблема? Права на удаление файла есть?
 
Вот сегодня тоже столкнулся с экшеном зенки FTP: нужно удалить файл или папку по фтп - не работает :(
Загружать загружает, но не стирает.
P.S. SFTP вообще не пашет.
Что пишет лог? - В Project Maker>Окна>Лог
 
Права поставил 0777, но не удаляет, ни снипетом, ни экшеном.
Переделал логику шаба, теперь вроде и не надо, но осадок остался.

P.S. Снипет без ошибок отыгрывает (при этом не удаляет), а экшен что-то про ошибку фтп пишет.
 
Тоже один раз ловил баг sftp на машине клиента но к сожалению нет доступа. можете организовать тестовый аккаунт на вашем серваке для теста?
 
Тоже один раз ловил баг sftp на машине клиента но к сожалению нет доступа. можете организовать тестовый аккаунт на вашем серваке для теста?
Столкнулся с проблемой заливки папок и файлов в категорию по sftp -не пашет, как ни крути, вчера удаляло еще, сегодня же уже нет(((. Подскажите,что делать? Думал, путь не верен, оказалось баг, просто не видит путь или файл.
 
Пример пришлите на почту саппорта, это нужно показывать программисту, который писал этот модуль.
 
Пример заливки файла через 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
По последнему примеру который прислали там есть проблема с правами на папки. Поэтому не пашет
 
Gj njve
По последнему примеру который прислали там есть проблема с правами на папки. Поэтому не пашет
По тому что дармидонт прислал проблема? Я отписал в саппорт и проект приложил с доступом к впске, надеюсь помогут,срочно уже.Дармидонт, а что за файл ключей,где его брать?
 
Последнее редактирование:
а что за файл ключей,где его брать?
Это все настраиваешь сам на своем впс.
Есть два вида соединение по SFTP через файл ключей - SSH подключение генерируется как обычно putty. Считается яко тру безопасно.
И обыкновенное логин пароль.

Код:
Развернуть Свернуть Копировать
SessionOptions sessionOptions = new SessionOptions
            {
                Protocol = Protocol.Sftp,
                HostName = "example.com",
                UserName = "user",
                Password = "mypassword",
GiveUpSecurityAndAcceptAnySshHostKey = true
            };

Либа подходит под любые настройки, протестирована на разных хостах. Все гуд. Проблем не было летаеть. Все описано в доках.
 
  • Спасибо
Реакции: Roman*
Ром, сделано именно так и все работает, как написал Дормидонт.
Ключ тебе не нужен сейчас. Он автоматом подхватывается: GiveUpSecurityAndAcceptAnySshHostKey=true
 
Gj njve

По тому что дармидонт прислал проблема? Я отписал в саппорт и проект приложил с доступом к впске, надеюсь помогут,срочно уже.Дармидонт, а что за файл ключей,где его брать?
ответил на тикет
 
Ром, сделано именно так и все работает, как написал Дормидонт.
Ключ тебе не нужен сейчас. Он автоматом подхватывается: GiveUpSecurityAndAcceptAnySshHostKey=true
А можешь для некодера обьяснить, все что написанно, нужно вставить в сишарп кубик и будет работать, заполнив данные? и что мне делать с
,

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

,

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

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

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

,

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

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

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

Вообщем, голосом и по расшаренному экрану обьясню в пару минут. В код шарпа вообще лезть не надо :)
 
подскажите как получить список, уже все перепробовал, не работает, использую вот этот код:
Код:
Развернуть Свернуть Копировать
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));
что нужно еще дописать что бы получить список?
 

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