如何使我的delphi应用程序使用FTPS而不是FTP(indy)
以下是我的节目:如何使我的delphi应用程序使用FTPS而不是FTP(indy),delphi,ftp,indy,delphi-xe3,ftps,Delphi,Ftp,Indy,Delphi Xe3,Ftps,以下是我的节目: Application.FTP.Host:= vHost; Application.FTP.Port:= vPort; try Application.FTP.AutoLogin := false; Application.FTP.Connect; Application.FTP.IOHandler.RecvBufferSize := 2048; 我正在delphixe3中使用TIdFTP组件 我想我得用这样的东西 Application.FTP.UseTLS
Application.FTP.Host:= vHost;
Application.FTP.Port:= vPort;
try
Application.FTP.AutoLogin := false;
Application.FTP.Connect;
Application.FTP.IOHandler.RecvBufferSize := 2048;
我正在delphixe3中使用TIdFTP
组件
我想我得用这样的东西
Application.FTP.UseTLS := utUseRequireTLS;
但是编译器不喜欢这一行
如何让我的FTP应用程序使用FTPS?首先,您需要SFTP(SSH上的FTP)还是FTPS(SSL上的FTP)?它们不是一回事。Indy目前不支持SSH。对于SSL,您可以将SSL IOHandler(如
TIdSSLIOHandlerSocketOpenSSL
)附加到TIdFTP.IOHandler
属性,然后将TIdFTP.UseTLS
属性设置为utNoTLSSupport
以外的任何属性(是的,TIdFTP
确实具有UseTLS
属性)。如果需要加密实际的文件传输连接,而不仅仅是命令连接,则可以使用Indy10将TIdFTP.DataPortProtection
属性设置为ftpdpsPrivate
,您可以添加一个TIdSSLIOHandlerSocketOpenSSL组件,并将FTP.IOHandler设置为指向此组件
然后在TIdSSLIOHandlerSocketOpenSSL中设置SSL选项
前
Delphi和Indy的哪些版本?您需要在
FTP.Connect
idsslohandlersocketopensssl1:=tidssliohandlersocketopensl.Create(nil)之前设置此选项;Application.FTP.IOHandler:=idsslohandlersocketopenssl1//TIdSSLIOHandlerSocketOpenSSL Application.FTP.UseTLS:=utUseExplicitTLS;Application.FTP.DataPortProtection:=ftpdpsPrivate代码>我得到了这个错误:[dcc32错误]untOpenCommand.pas(103):E2003未声明的标识符:“utUseExplicitTLS”将IdExplicitTLSClientServerBase
单位添加到您的uses子句中。这是有效的,但我现在得到了这个错误:[dcc32错误]untOpenCommand.pas(104):E2003未声明的标识符:“ftpdpsPrivate”
ftpC.IOHandler:=iohFTPSE; //TIdSSLIOHandlerSocketOpenSSL
ftpC.UseTLS:=utUseExplicitTLS;
ftpC.DataPortProtection:=ftpdpsPrivate;