Ok, even helemaal back to basics.
Je had het erover dat de Put niet werkte. Maar heb je de Get wel getest ??
Als die ook niet werkt kan het ook nog aan instellingen op je server liggen.
In dat geval zou je gewoon eens een testserver kunnen gebruiken.
http://test.rebex.net/
Met volgens stukje code krijg ik netjes de readme.txt text terug.
Let er wel op dat je ook de OpenSSL dlls in je .exe directory moet hebben staan.
Pak voor de 32 bit applicatie deze: http://indy.fulgan.com/SSL/openssl-1...i386-win32.zip
Delphi Code:
uses
IdIOHandler, IdIOHandlerSocket,
IdIOHandlerStack, IdSSL, IdSSLOpenSSL, IdBaseComponent,
IdComponent, IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase,
IdFTP, IdFTPCommon;
function MemoryStreamToString(M: TMemoryStream): ansistring;
begin
SetString(Result, PAnsiChar(M.Memory), M.Size div SizeOf(AnsiChar));
end;
procedure Test;
var
IdFTP: TIdFTP;
IdSSLIOHandlerSocketOpenSSL: TIdSSLIOHandlerSocketOpenSSL;
Stream: TMemoryStream;
Str: AnsiString;
begin
Stream := TStringStream.Create;
IdFTP := TIdFTP.Create(nil);
IdSSLIOHandlerSocketOpenSSL:= TIdSSLIOHandlerSocketOpenSSL.Create(nil);
try
IdFTP.IOHandler := IdSSLIOHandlerSocketOpenSSL;
IdFTP.UseTLS := utUseExplicitTLS;
IdFTP.DataPortProtection := ftpdpsPrivate;
IdFTP.Host := 'test.rebex.net';
IdFTP.Username := 'demo';
IdFTP.Password := 'password';
IdFTP.TransferType := ftBinary;
IdFTP.Passive := true;
IdFTP.Connect();
IdFTP.Get('readme.txt', Stream);
Str := MemoryStreamToString(Stream);
Showmessage(MemoryStreamToString(Stream));
finally
IdFTP.Free;
IdSSLIOHandlerSocketOpenSSL.Free;
Stream.Free;
end;
end;
(en roep dan in een OnButtonClick de test-procedure aan)
Als dat werkt probeer dan dit stukje code met jouw ftps-server met een readme.txt in de root.
Bookmarks