Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi: Сети
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.81/95: Рейтинг темы: голосов - 95, средняя оценка - 4.81
Afftar
Детектор лжи
38 / 37 / 1
Регистрация: 12.04.2009
Сообщений: 225
1

Передача файла на FTP-сервер

08.09.2009, 22:54. Просмотров 17669. Ответов 18
Метки нет (Все метки)

Кто подскажет как оправить файл на фтп сервер из указаной папке на локальном компютере на указаную папку фтп сервера?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2009, 22:54
Ответы с готовыми решениями:

FTP передача файла
IdFTP1.Host:='****'; IdFTP1.Username := '***'; IdFTP1.Password := '****';...

Поиск и отправка файла на FTP сервер
Как сделать, чтобы программа в заданной папке искала файл по маске, а потом...

Передача файлов на FTP не зная полного пути, но зная имя и расширение файла
Всем привет знатокам Delphi, нужен ваш совет, суть в том, что надо передать...

Передача файлов через ftp
Доброго времени суток, очень прошу помогите с реализацией задачи, есть...

FTP сервер. Удаление каталога
все работает, исключение удаление каталога. Sz: Integer; s: String; begin...

18
Dream
157 / 155 / 16
Регистрация: 26.07.2008
Сообщений: 549
09.09.2009, 12:49 2
Компонент INDY - TIdFTP метод PUT (загрузка файла на сервер), GET (загрузка файла с сервера).
0
Afftar
Детектор лжи
38 / 37 / 1
Регистрация: 12.04.2009
Сообщений: 225
09.09.2009, 17:49  [ТС] 3
А код можна?
0
Lord_Voodoo
Супер-модератор
8611 / 2242 / 133
Регистрация: 07.03.2007
Сообщений: 10,830
Завершенные тесты: 1
09.09.2009, 18:00 4
Afftar, попробуй перевести на дельфи, ничего сложного в принципе:

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
42
43
  TIdFTP* FTP = new TIdFTP(NULL);
  FTP->Host = inFile->ReadString("NETSRV", "FTP_IP", "10.30.1.1");
  FTP->User = inFile->ReadString("NETSRV", "FTP_USER", "user");
  FTP->Password = inFile->ReadString("NETSRV", "FTP_PWD", "password");
  delete inFile;
  AnsiString Src = Application->ExeName.SubString(1, Application->ExeName.LastDelimiter("\\"));
  try{
    if(FileExists(Src + "Log\\" + "*.log")){
       WriteLog("Отправка логов по FTP началась.", User->Login);
       AnsiString Adr = Src + "Log\\" + "*.log";
       int done = findfirst(Adr.c_str(), &ffblk, 0);
       InMass[0] = AnsiString(ffblk.ff_name);
       Index++;
       while(!done){
         done = findnext(&ffblk);
         InMass[Index] = AnsiString(ffblk.ff_name);
         if(InMass[Index] == InMass[Index - 1]){
           InMass[Index] = "";
           break;
         }
         Index++;
       }
       FTP->Connect(true);
       try{
         FTP->ChangeDir("Log");
       }catch(...){
         FTP->MakeDir("Log");
         FTP->ChangeDir("Log");
       }
       try{
         FTP->MakeDir(User->Login);
       }catch(...){}
       FTP->ChangeDir(User->Login);
       for(int i = 0; i < Index; i++){
         FTP->Put(Src + "Log\\" + InMass[i], InMass[i], false);
       }
       WriteLog("Отправка логов по FTP завершена успешно.", User->Login);
    }
  }catch(...){
    WriteLog("Отправка логов по FTP завершена неудачно.", User->Login);
  }
  FTP->Disconnect();
  delete FTP;
0
Dream
157 / 155 / 16
Регистрация: 26.07.2008
Сообщений: 549
09.09.2009, 18:26 5
Брось на форму компонент TidFTP.

Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm1.Button1Click(Sender: TObject);
begin
idFTP1.Host:='ftp_server.ru';   //FTP-сервер
idFTP1.Port:=21;                  //порт ФТП сервера
idFTP1.Username:='Логин';
idFTP1.Password:='Пароль';
idFTP.Connect;
idFTP1.Put('Файл_который_нужно_загрузить_на_сервер');
idFTP1.Disconnect;
end;
В Гугле полно примеров.
1
Afftar
Детектор лжи
38 / 37 / 1
Регистрация: 12.04.2009
Сообщений: 225
10.09.2009, 00:10  [ТС] 6
При попытке отослать файл выдает Bad Command.
0
Dream
157 / 155 / 16
Регистрация: 26.07.2008
Сообщений: 549
10.09.2009, 09:36 7
Цитата Сообщение от Afftar Посмотреть сообщение
При попытке отослать файл выдает Bad Command.
Что тветил на вопрос брандмауэра?
Выложи исходник.
1
Afftar
Детектор лжи
38 / 37 / 1
Регистрация: 12.04.2009
Сообщений: 225
10.09.2009, 16:30  [ТС] 8
Delphi
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Menus, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdFTP, ExtCtrls, ComCtrls, ColorGrd, Grids, Outline,
  DirOutln;
 
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
 
procedure TForm1.Button2Click(Sender: TObject);
begin
idFTP1.Host:='site.local'; //FTP-сервер
idFTP1.Port:=21; //порт ФТП сервера
idFTP1.Username:='root';
idFTP1.Password:='1111';
idFTP1.Connect;
idFTP1.put('c:\test.txt');
idFTP1.Disconnect;
end;
 
procedure TForm1.IdFTP1Connected(Sender: TObject);
begin
ShowMessage('Соединение успешно!');
end;
 
procedure TForm1.IdFTP1Disconnected(Sender: TObject);
begin
ShowMessage('Соединение потеряно!');
end;
 
end.
0
Dream
157 / 155 / 16
Регистрация: 26.07.2008
Сообщений: 549
10.09.2009, 16:38 9
Данный код, на удаленный ФТП сервер прекрасно отправляет файлы.
Может проблема с вашим ФТП сервером, или порт не правильно указан.
0
Afftar
Детектор лжи
38 / 37 / 1
Регистрация: 12.04.2009
Сообщений: 225
10.09.2009, 17:10  [ТС] 10
Спасибо всем, нашел в чем проблема. Вместо
Delphi
1
idFTP1.put('c:\test.txt');
нужно вставить
Delphi
1
IdFTP1.Put('c:\test.txt','test.txt' ,true);
1
Afftar
Детектор лжи
38 / 37 / 1
Регистрация: 12.04.2009
Сообщений: 225
10.09.2009, 20:07  [ТС] 11
И еще вопрос. Загрузил я test.txt на сервер. Нужно чтобы текст из едитов записывался в этот файл, но чтобы каждый раз текст записывался в конец файла.
0
Dream
157 / 155 / 16
Регистрация: 26.07.2008
Сообщений: 549
10.09.2009, 20:51 12
Delphi
1
2
3
4
5
6
7
8
9
 
procedure TForm1.Button1Click(Sender: TObject);
var F: TextFile;
begin
AssignFile(F,'c:\test.txt'); //учти, что файл должен существовать иначе выдаст ошибку
Append(F);
WriteLn(F,Edit1.Text); //записываем все время в конец файла из едита
CloseFile(F);
end;
1
Afftar
Детектор лжи
38 / 37 / 1
Регистрация: 12.04.2009
Сообщений: 225
10.09.2009, 23:32  [ТС] 13
Спасибо, работает в пределах моего компа, но при попытке считать файл с сервера выдает I/O error 58 или 123
0
Dream
157 / 155 / 16
Регистрация: 26.07.2008
Сообщений: 549
11.09.2009, 08:07 14
Этот код и расчитан для работы с локальным файлом, а не с сетевым.
И файл придеться все время отправлять на ФТП-сервер после изменения.

Учти, что код IdFTP1.Put('c:\test.txt','test.txt' ,true) - в существующий файл 'test.txt на сервере добавит запись из нового оправляемого фала.
А код IdFTP1.Put('c:\test.txt','test.txt' ,false) - заменит существующий файл на новый.
0
Afftar
Детектор лжи
38 / 37 / 1
Регистрация: 12.04.2009
Сообщений: 225
12.09.2009, 21:49  [ТС] 15
Вот задача, а перезапись файла на фтп можно огразизовать?
0
Vitorrio
17 / 7 / 2
Регистрация: 12.02.2010
Сообщений: 200
27.07.2012, 07:24 16
А если нет формы в приложении? приложение без окна, тогда как добавить компонент для работы с фтп сервером? И возможно ли отправить не файл на диске а поток стрим?

Добавлено через 15 часов 33 минуты
Со всем разобрался=) и понял что форма обязательна, а скрывать приложение можно и другим способом, через IdFTP можно отправить стрим поток=)
0
mafik2121
12 / 12 / 1
Регистрация: 08.06.2011
Сообщений: 88
27.07.2012, 16:31 17
Скачайте FTP клиент, легко разобраться как все работает. Очень много функций.
0
AlekNomanOnim
0 / 0 / 1
Регистрация: 20.07.2012
Сообщений: 10
08.08.2012, 22:33 18
Как обойти ограничение по правам в Windows7, если закачивать файл на ftp средствами delfi?
0
Diman19
0 / 0 / 0
Регистрация: 10.06.2012
Сообщений: 11
29.08.2012, 10:43 19
Компилируется нормально, но при нажатии кнопки выдается ошибка
i won't open a connection to 0.0.0.0
подскажите как исправить
0
29.08.2012, 10:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2012, 10:43

Как залить файл на FTP-сервер?
Как залить файл на ftp сервер?

Как отправить файл на FTP-сервер?
Всем привет. Как реализовать передачу данных из программы на FTP? Необходимо,...

Как в Delphi 7 отправить файл на ftp сервер
:confused: Кто-нибудь, подскажите, как в Delphi 7 отправить файл на ftp сервер


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru