0

この関数を使用して、ftp 接続からファイルを取得しています。

function GetFileFromFTP(server, username, password, localfile, remotefile: string; port: word = 21): boolean;
var
  hopen, hconnect: HINTERNET;
  good:boolean;
begin
  hopen := InternetOpen('myagent', INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0);
  hconnect := InternetConnect(hopen, pchar(server), port, pchar(username), pchar(password), INTERNET_SERVICE_FTP,  INTERNET_FLAG_PASSIVE, 0);
  good := FtpGetFile(hconnect, pchar(remotefile), pchar(localfile), false, 0, FTP_TRANSFER_TYPE_UNKNOWN or INTERNET_FLAG_DONT_CACHE, 0);
  InternetCloseHandle(hconnect);
  Result := good;
end;

問題は、サーバー文字列を次のように使用する場合です。

var server:string;

server := 'ftp://192.168.1.1/XDIRECTORY/'; //IT CANT GET THE FILE
server := 'localhost'; //GETS THE FILE


procedure TForm1.btn1Click(Sender: TObject);
begin
if GetFileFromFTP(server, '', '', 'upx2.exe', 'upx.exe') then
begin
Caption := 'Install succesfull';
end
else
begin
Caption := 'Install NOT succesfull';
end;

ファイルがフォルダー内にある場合、またはサーバーの IP アドレスが使用される場合、ftp サーバーがファイルを取得できない理由がわかりません。

サーバーをlocalhostに設定した場合にのみ有効です

4

1 に答える 1