Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

FTP протокол


Jeka ©   (2004-10-07 01:11:00) 

Как отправить/принять файл с сервера по FTP протоколу


PEAKTOP   (2004-10-07 07:07:00) [1]


Пусть имеется файл "C:\myfile.txt" и его надо аплоадить на FTP " ftp://myhost.com" с именем на серваке "myftpfile.txt" в папку " ftp://myhost.com/dir1/subdir1/myftpfile.txt"

Пример:
 if UploadFile('C:\myfile.txt', 'myftpfile.txt', ['dir1', 'subdir1'])then
   ShowMessage('Файл был загружен на FTP');

{==============================================================================}
function UploadFile(const FileName, FTPFileName:string; DirPath:array of string):boolean;
var
 ftp_host    :string;
 ftp_username:string;
 ftp_password:string;
 ftp_port    :word;
 hInet   :pointer;
 hFTP    :pointer;
 TempDir :string;
 ic      :integer;
 Proxy   :string;
 IsProxy :boolean;
 IsSafe  :boolean;
begin
 Result := false;
 hInet := nil;
 hFTP := nil;
 ftp_host     := 'myhost.com';
 ftp_username := 'user';      
 ftp_password := 'password';
 ftp_port     := 21;
 // Берем настройки IE на предмет использования прокси-сервера
 IsProxy := RegistryGetDWord(
              HKEY_CURRENT_USER,
              'Software\Microsoft\Windows\CurrentVersion\Internet Settings',
              'ProxyEnable') = 1;
 Proxy   := RegistryGetString(
              HKEY_CURRENT_USER,
              'Software\Microsoft\Windows\CurrentVersion\Internet Settings',
              'ProxyServer'
              );
 if IsProxy then
   hInet := InternetOpen('Microsoft Internet Explorer', 3, @Proxy[1], nil, 0)
  else
   hInet := InternetOpen('Microsoft Internet Explorer', 0, nil, nil, 0);
 if(hInet<>NIL) then
   begin
   hFTP := InternetConnect(
             hInet,
             @ftp_host[1],
             ftp_port,
             @ftp_username[1],
             @ftp_password[1],
             1{FTP},
             $08000000 {INTERNET_FLAG_PASSIVE},
             0);
   if(hFTP<>NIL)then
     begin
     // заходим в недра папок FTP
     for ic:=Low(DirPath) to High(DirPath) do
       begin
       TempDir := DirPath[ic];
       if not FtpSetCurrentDirectory(hFTP, @TempDir[1]) then
       // Нет папки - создадим ее
         begin
         FtpCreateDirectory(hFTP, @TempDir[1]);
         FtpSetCurrentDirectory(hFTP, @TempDir[1]);
         end;
       end;
     Result := FtpPutFile(hFTP, @FileName[1], @FtpFileName[1], 0, 0);
     InternetCloseHandle(hFTP);
     end;
   InternetCloseHandle(hInet);
   end;
end;


P.S. В примере условно считаем, что у наc есть функции
RegistryGetString и RegistryGetDWord, читающие из реестра строку и DWrord соответсвенно.


Defunct   (2004-10-07 01:15:00) [2]

TIdFTP F1


Наверх

Титульная страница Поиск, карта сайта Написать письмо