![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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