С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/29: Рейтинг темы: голосов - 29, средняя оценка - 4.62
1 / 1 / 0
Регистрация: 13.02.2012
Сообщений: 120

Скачать файл с FTP в указанную директорию

10.11.2014, 10:50. Показов 5827. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, подскажите пожалуйста, как прописать скачивание файла с ftp в указанную директорию на компьютере?
Код для загрузки на ftp у меня есть, вот только не получается реализовать скачивание. Пусть, к примеру, по пути C:\Information_System
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
34
35
36
37
38
39
40
41
string path = @"C:\Information_System\IVT.txt";
            FileInfo fileInf = new FileInfo(path);
            string uri = "ftp://" + "__.__.__.__" + "/" + fileInf.Name;
            FtpWebRequest reqFTP;
            // Создаем объект FtpWebRequest
            reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + "__.__.__.__" + "/" + fileInf.Name));
            // Учетная запись
 
            reqFTP.Credentials = new NetworkCredential("логин", "пароль");
            reqFTP.KeepAlive = false;
            // Задаем команду на закачку
            reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
            // Тип передачи файла
            reqFTP.UseBinary = true;
            // Сообщаем серверу о размере файла
            reqFTP.ContentLength = fileInf.Length;
            // Буффер в 2 кбайт
            int buffLength = 2048;
            byte[] buff = new byte[buffLength];
            int contentLen;
            // Файловый поток
            FileStream fs = fileInf.OpenRead();
            try
            {
                Stream strm = reqFTP.GetRequestStream();
                // Читаем из потока по 2 кбайт
                contentLen = fs.Read(buff, 0, buffLength);
                // Пока файл не кончится
                while (contentLen != 0)
                {
                    strm.Write(buff, 0, contentLen);
                    contentLen = fs.Read(buff, 0, buffLength);
                }
                // Закрываем потоки
                strm.Close();
                fs.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Ошибка");
            }
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.11.2014, 10:50
Ответы с готовыми решениями:

Как по FTP скачать всю директорию себе на комп?
<?php //Локальная директория для скачивания $local_file='L:/wp-content/uploads/2018/03/'; $server_file...

Копирование определённых файл(ов) в указанную директорию.
Так. Есть файл...: "d:\\log.txt" Надо копировать его в директорию c:\\ при нажатии кнопки button1. Добавлено через 8 минут Покачто...

Скачать файл в директорию
Добрый вечер, я хочу скачать файл в директорию с ехе файлом (сама программа выполн. дан. действие) В директории есть ещё одна папка:...

4
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
10.11.2014, 13:06
Цитата Сообщение от Serega@93-93 Посмотреть сообщение
не получается реализовать скачивание
Странная формулировка проблемы. Что именно не получается? Ошибки какие-то есть или что-нибудь?
2
1 / 1 / 0
Регистрация: 13.02.2012
Сообщений: 120
10.11.2014, 14:21  [ТС]
Есть метод
C#
1
reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
я не понимаю, как сделать так, чтобы файл скачивался в нудную мне директорию. При выполнении программы не понятно, скачивается ли вообще что-то или нет. Я не вижу результата выполнения и не понимаю, куда она грузит файл, но с помощью аналогичного кода получилось загрузить файл на сервер и удалить его оттуда, а вот скачать не могу (((. Ошибок нет ...
Вот
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
            string ftpUserID = "___";
            string ftpPassword = "___";
 
            try
            {
                string path = "ftp://185.28.20.73/IVT.txt";
                FtpWebRequest reqFTP;
                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(path));
                reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
                reqFTP.KeepAlive = false;
                //reqFTP.Method = WebRequestMethods.Ftp.DeleteFile;
                reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
 
                string result = String.Empty;
                FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
                long size = response.ContentLength;
                Stream datastream = response.GetResponseStream();
                StreamReader sr = new StreamReader(datastream);
                result = sr.ReadToEnd();
                sr.Close();
                datastream.Close();
                response.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
10.11.2014, 15:07
Лучший ответ Сообщение было отмечено Serega@93-93 как решение

Решение

Serega@93-93,
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
            string ftpUserID = "___";
            string ftpPassword = "___";
            string path = "ftp://185.28.20.73/IVT.txt";
            string to = "/IVT.txt"; // путь куда сохранять
            try
            {
                FtpWebRequest request = (FtpWebRequest)WebRequest.Create(path);
                request.Method = WebRequestMethods.Ftp.DownloadFile;
                request.Credentials = new NetworkCredential(ftpUserID, ftpPassword); 
                FtpWebResponse response = (FtpWebResponse)request.GetResponse(); 
                Stream responseStream = response.GetResponseStream();
                FileStream file = File.Create(to);
                byte[] buffer = new byte[512*1024];
                int read;
                while ((read = responseStream.Read(buffer, 0, buffer.Length)) > 0)
                {
                    file.Write(buffer, 0, read);
                } 
                file.Close();
                responseStream.Close();
                response.Close();
                 
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "Ошибка загрузки файла!");
                return;
            }
я так качаю
2
1 / 1 / 0
Регистрация: 13.02.2012
Сообщений: 120
10.11.2014, 15:17  [ТС]
Спасибо большое! Вы мне очень помогли )))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.11.2014, 15:17
Помогаю со студенческими работами здесь

Копировать под своим именем файл, указанный первым параметром, в директорию, указанную вторым параметром
Помогите, если не трудно. Вот задание: Создайте пакетный файл P2.bat, предусматривающий ввод параметров в командной строке запуска этого...

Скачать файл с FTP
сто раз обсуждалось, но все таки, пример не работает, где ошибка порылась? Option Explicit On Public Class Form1 Private...

WinApi, FTP скачать файл с сервера
В общем не качает(( #include "stdafx.h" #include <iostream> #include <stdio.h> // 123123.cpp: определяет точку входа для...

Загрузить/скачать файл по FTP протоколу
Господа, будьте добры, необходим рабочий пример. Заранее всем большое спасибо!

Загрузить/скачать файл по FTP протоколу
Господа, будьте добры, необходим рабочий пример. Заранее всем большое спасибо! Не могу найти нормальный рабочий пример..


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru