powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / загрузка файла на ftp сервер
21 сообщений из 21, страница 1 из 1
загрузка файла на ftp сервер
    #39852763
bulaolen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть сервер, к нему через total comander подключаюсь по хосту 10.х.х.х со вводом логина пароля.

Затем я в главную папку (там ничего нет, если что) копирую файл и он находится в состоянии ожидания загрузки в систему (это сейчас не важно).

Мне нужно автоматизировать процесс загрузки на этот сервер. Я не могу подключиться туда, все время говорит что URL, URI, или формат адреса не верный. Что только не пробовал, но все не канает.

Код: c#
1.
2.
3.
        string uri = @"ftp:\\логин:пароль@10.10.10.10\";
        string uri = @"ftp:\\10.10.10.10\";
        string uri = @"\\10.10.10.10\";



Как правильно подключаться на ftp сервер в таком случае?
...
Рейтинг: 0 / 0
загрузка файла на ftp сервер
    #39852800
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
string uri = @"ftp://логин:пароль@10.10.10.10";
...
Рейтинг: 0 / 0
загрузка файла на ftp сервер
    #39852812
bulaolen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

данный формат пути не поддерживается, выдает мне ошибку система try catch
...
Рейтинг: 0 / 0
загрузка файла на ftp сервер
    #39852817
bulaolen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и следующий момент: какую схему использовать для загрузки этого файла на сам сервер?
...
Рейтинг: 0 / 0
загрузка файла на ftp сервер
    #39852853
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой файл? Какой сервер? Причем тут тоталкоммандер? Причем тут VB? Что за система try catch? Что за ошибку она выдает? Где код вообще?
Я вообще сначала понял вопрос, что ошибку выдает тоталкоммандер, не приняв слеш не в ту сторону. Теперь вообще ничего не ясно.
...
Рейтинг: 0 / 0
загрузка файла на ftp сервер
    #39852863
bulaolen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

пишу программу на шарпе, она там определенные перемещения выполняет из папки в папку.
есть момент, когда надо скопировать (или перенести) файл на ftp сервер, и тут у меня и появилась проблема. из-за неправильной ссылки вылетает ошибка несоответствия адреса. весь предыдущий код вообще не важен, максимум вот (но это пробы и ошибки, черновой код где я вообще не понимаю что делаю потому что ищу ответ на свой вопрос - КАК РЕАЛИЗОВАТЬ?)

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
                     if (entry.FullName.EndsWith(".xml", StringComparison.OrdinalIgnoreCase))
                            {
                                try
                                {
                                    ZipFile.ExtractToDirectory(file, dir_end + @"\zip\");
                                    //достаю файл из архива
                                    //System.IO.File.Copy(dir_end + @"\zip\" + entry.Name, uri + @"/" + fileName, true);
                                    //пытаюсь скопировать на сервер, но не получается
                                    //дальше вообще  сам не понимаю что

                                    //FileInfo fileInf = new FileInfo(dir_end + @"\zip\" + entry.Name);

                                    FtpWebRequest reqFTP;

                                    Uri baseURI = new Uri(uri);

                                    // Создаем объект FtpWebRequest
                                    reqFTP = (FtpWebRequest)FtpWebRequest.Create(baseURI + entry.Name);
                                    // Учетная запись
                                    reqFTP.Credentials = new NetworkCredential(userName, password);
                                    reqFTP.KeepAlive = false;
                                    reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
                                    reqFTP.UseBinary = true;

                                    
                                }
                                catch (Exception ex)
                                {
                                    MessageBox.Show(ex.Message, "Ошибка загрузки файла!");
                                    return;
                                }

                            }
...
Рейтинг: 0 / 0
загрузка файла на ftp сервер
    #39852869
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бейсик то тебе тогда зачем? пиши в другой форум по C#

Модератор: Тема перенесена из форума "Visual Basic".
...
Рейтинг: 0 / 0
загрузка файла на ftp сервер
    #39852890
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
то есть ошибка исключительно в этом коде?
bulaolen
Код: c#
1.
2.
string uri = @"ftp://логин:пароль@10.10.10.10";
Uri baseURI = new Uri(uri);

тогда зачем нам морочить голову всякими серверами и т.п., если проблема только в том, чтобы создать Uri
И, кстати, у меня этот код никаких ошибок не выдает.
Какой текст ошибки?
...
Рейтинг: 0 / 0
загрузка файла на ftp сервер
    #39852894
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

скорее всего виндовый ftp клиент не установлен, но передавать файлы по ftp это зашкварно, как по мне, этот протокол старше меня, вроде как
...
Рейтинг: 0 / 0
загрузка файла на ftp сервер
    #39852898
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bulaolen
Код: c#
1.
baseURI + entry.Name

для правильного построения адресов, кстати, используется класс UriBuilder
...
Рейтинг: 0 / 0
загрузка файла на ftp сервер
    #39852918
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://docs.microsoft.com/ru-ru/dotnet/api/system.net.ftpwebrequest?view=netcore-3.0#комментарии
Важно!

Мы не рекомендуем использовать FtpWebRequest класса для разработки новых приложений. Дополнительные сведения и альтернативные варианты FtpWebRequest, см. в разделе WebRequest не должны использоваться на сайте GitHub
.
...
Рейтинг: 0 / 0
загрузка файла на ftp сервер
    #39854305
bulaolen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет, все это к успеху не приведет.
оптимизирую вопрос:

нужно копировать (или переместить) файл с локальной папки на сетевой ресурс.
обычно это производится ручками, но задача стоит автоматизировать.

вот так выглядит заготовка кода:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
string uri = @"\\10.10.112.24\";
string dir_end= @"C:\\1";

ZipFile.ExtractToDirectory(file, dir_end + @"\zip\");
//достаю  файл из архива, что бы было легче работать
                                    
System.IO.File.Copy(dir_end + @"\zip\" + entry.Name, uri + fileName, true);
/*пытаюсь его скопировать, но вылетает ошибка :
"Необработанное исключение типа "System.IO.IOException" в mscorlib.dll
Дополнительные сведения: Не найден сетевой путь."
*/



Когда процесс выполняется руками, пользователь через total commander подключается через ftp на 10.10.112.24 (host name[;Port]) под логин паролем

дельные советы, как это сделать очень хочу увидеть
...
Рейтинг: 0 / 0
загрузка файла на ftp сервер
    #39854460
bulaolen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bulaolenдельные советы, как это сделать очень хочу увидеть

Точнее, как загрузить файл на этот адрес? Чем короче код - тем проще
...
Рейтинг: 0 / 0
загрузка файла на ftp сервер
    #39854464
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bulaolenнет, все это к успеху не приведет.
оптимизирую вопрос:

нужно копировать (или переместить) файл с локальной папки на сетевой ресурс.
обычно это производится ручками, но задача стоит автоматизировать.

вот так выглядит заготовка кода:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
string uri = @"\\10.10.112.24\";
string dir_end= @"C:\\1";

ZipFile.ExtractToDirectory(file, dir_end + @"\zip\");
//достаю  файл из архива, что бы было легче работать
                                    
System.IO.File.Copy(dir_end + @"\zip\" + entry.Name, uri + fileName, true);
/*пытаюсь его скопировать, но вылетает ошибка :
"Необработанное исключение типа "System.IO.IOException" в mscorlib.dll
Дополнительные сведения: Не найден сетевой путь."
*/



Когда процесс выполняется руками, пользователь через total commander подключается через ftp на 10.10.112.24 (host name[;Port]) под логин паролем

дельные советы, как это сделать очень хочу увидеть
Ты понимаешь что тут происходит?
1. File.Copy() это копирование в виндовой сети, т.е. удаленный комп это расшаренная папка виндовса, а не FTP сервер
2. Ошибка правильно вылетает, т.к. в виндовой сети недопустим путь типа "\\10.10.112.24\myfile.txt", но это неважно (см п.1)

Если штатными средствами не получается заливка на FTP, то возьми какой-нибудь сторонний софт: виндовый ftp.exe, или скачай бесплатные wget.exe или curl.exe. Лучше curl.
...
Рейтинг: 0 / 0
загрузка файла на ftp сервер
    #39854466
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bulaolenдельные советы, как это сделать очень хочу увидетьвыше я уже дал ссылку с советом использовать FluentFtp или аналогичный. Видимо не дельный совет. Дельный будет - это когда всю программу за тебя напишут?

https://github.com/robinrodricks/FluentFTP
...
Рейтинг: 0 / 0
загрузка файла на ftp сервер
    #39854467
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesShocker.Pro,

скорее всего виндовый ftp клиент не установлен, но передавать файлы по ftp это зашкварно, как по мне, этот протокол старше меня, вроде как

А через какой протокол не зашкварно?
...
Рейтинг: 0 / 0
загрузка файла на ftp сервер
    #39854492
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T1. File.Copy() это копирование в виндовой сети, т.е. удаленный комп это расшаренная папка виндовсаСлово винда здесь явно лишнее. Никто не мешает поднять файловый сервер на линуксе или на нетвари или еще на чем-нибудь. Уместнее говорить о UNC-путях, с которыми может работать File.Copy
...
Рейтинг: 0 / 0
загрузка файла на ftp сервер
    #39854567
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProDima T1. File.Copy() это копирование в виндовой сети, т.е. удаленный комп это расшаренная папка виндовсаСлово винда здесь явно лишнее. Никто не мешает поднять файловый сервер на линуксе или на нетвари или еще на чем-нибудь. Уместнее говорить о UNC-путях, с которыми может работать File.Copy
Не совсем так. Точнее UNC-пути применяются в виндовом файлообменном протоколе, который может использоваться в линуксе.
Вобщем я к тому что UNC это изобретение MS и линуксу пришлось под него подстроиться, т.е. в линуксе он как правило не используется (есть родной NFS ) до тех пор пока не потребуется взаимодействие с виндовсом.
...
Рейтинг: 0 / 0
загрузка файла на ftp сервер
    #39861261
bulaolen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел решение!

1)скачать и добавить в VS пакет FtpClient
2)добавить в код следующее:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
using System.Net.FtpClient;

namespace S
{
     public partial class Class : Class
     {
          FtpClient ftp = new FtpClient();
          
          ftp.Host = @"ftp://10.13.123.222/"; // + "folder/folder/.../"
          ftp.UserName = "login";
          ftp.Password = "qwerty";
          ftp.UploadFile("", file);
     }     
}



Где FtpClient - Системный cs файлик, в котором прописан код, содержищий процедуру UploadFile :

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
public void UploadFile(string path, string fileName)
        {
            //для имени файла
            string shortName = fileName.Remove(0, fileName.LastIndexOf(@"\" ) + 1);


            FileStream uploadedFile = new FileStream(fileName, FileMode.Open, FileAccess.Read);

            ftpRequest = (FtpWebRequest)WebRequest.Create(/*"ftp://" + */_Host + path + shortName);
            ftpRequest.Credentials = new NetworkCredential(_UserName, _Password);
            ftpRequest.EnableSsl = _UseSSL;
            ftpRequest.Method = WebRequestMethods.Ftp.UploadFile;

            //Буфер для загружаемых данных
            byte[] file_to_bytes = new byte[uploadedFile.Length];
            //Считываем данные в буфер
            uploadedFile.Read(file_to_bytes, 0, file_to_bytes.Length);

            uploadedFile.Close();

            //Поток для загрузки файла 
            Stream writer = ftpRequest.GetRequestStream();

            writer.Write(file_to_bytes, 0, file_to_bytes.Length);
            writer.Close();
        }



Как-то так:) удалось найти на просторах интернета решение, все работает как часики, оч старые фтп часики, но в отличном состоянии
...
Рейтинг: 0 / 0
загрузка файла на ftp сервер
    #39861276
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чем не устроил флюент? Просто интересно.
...
Рейтинг: 0 / 0
загрузка файла на ftp сервер
    #39861345
bulaolen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
не совсем получилось разобраться с ним и внедрить.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / загрузка файла на ftp сервер
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]