Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / загрузка файла на ftp сервер / 21 сообщений из 21, страница 1 из 1
22.08.2019, 14:39
    #39852763
bulaolen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
загрузка файла на ftp сервер
Есть сервер, к нему через 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
22.08.2019, 15:13
    #39852800
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
загрузка файла на ftp сервер
Код: c#
1.
string uri = @"ftp://логин:пароль@10.10.10.10";
...
Рейтинг: 0 / 0
22.08.2019, 15:25
    #39852812
bulaolen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
загрузка файла на ftp сервер
Shocker.Pro,

данный формат пути не поддерживается, выдает мне ошибку система try catch
...
Рейтинг: 0 / 0
22.08.2019, 15:27
    #39852817
bulaolen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
загрузка файла на ftp сервер
и следующий момент: какую схему использовать для загрузки этого файла на сам сервер?
...
Рейтинг: 0 / 0
22.08.2019, 16:18
    #39852853
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
загрузка файла на ftp сервер
Какой файл? Какой сервер? Причем тут тоталкоммандер? Причем тут VB? Что за система try catch? Что за ошибку она выдает? Где код вообще?
Я вообще сначала понял вопрос, что ошибку выдает тоталкоммандер, не приняв слеш не в ту сторону. Теперь вообще ничего не ясно.
...
Рейтинг: 0 / 0
22.08.2019, 16:26
    #39852863
bulaolen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
загрузка файла на ftp сервер
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
22.08.2019, 16:36
    #39852869
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
загрузка файла на ftp сервер
бейсик то тебе тогда зачем? пиши в другой форум по C#

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

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

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

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

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

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

вот так выглядит заготовка кода:
Код: 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
28.08.2019, 08:18
    #39854460
bulaolen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
загрузка файла на ftp сервер
bulaolenдельные советы, как это сделать очень хочу увидеть

Точнее, как загрузить файл на этот адрес? Чем короче код - тем проще
...
Рейтинг: 0 / 0
28.08.2019, 08:37
    #39854464
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
загрузка файла на ftp сервер
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
28.08.2019, 08:47
    #39854466
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
загрузка файла на ftp сервер
bulaolenдельные советы, как это сделать очень хочу увидетьвыше я уже дал ссылку с советом использовать FluentFtp или аналогичный. Видимо не дельный совет. Дельный будет - это когда всю программу за тебя напишут?

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

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

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

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


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