【问题标题】:Any way to use insecured FTP connection (noTLS) on delphi?有什么方法可以在 delphi 上使用不安全的 FTP 连接(noTLS)?
【发布时间】:2026-01-30 02:10:01
【问题描述】:

我正在使用 Delphi 开发一个 android 应用程序。我的 ftp 服务器有问题。对于我不知道的任何原因,它只接受标准的 ftp 连接(没有 TLS)。我收到 超时错误,代码如下:

function uploadfile(imagetoload:TBitmap;place_id:string):boolean;
var
  filename:String;
  url,imagepath:string;
  FTP: TIdFTP;
begin
  try
    try
      filename:='PPic-'+user_id+'-'+DateToStr(today)+TimeToStr(Today)+'.jpg';
      filename:=replacetext(filename,'/','-');
      filename:=replacetext(filename,':','-');
    imagepath:=system.IOUtils.TPath.Combine(system.IOUtils.TPath.GetDocumentsPath,filename);
      imagetoload.SaveToFile(imagepath);
      ftp := TidFTP.Create(Nil);
      ftp.Host:=FTPSERVER;
      ftp.Username:=FTPUSR;
      ftp.Password:=FTPPWD;
      ftp.Passive := True;
      ftp.ConnectTimeout := 6000;
      ftp.Connect;

我尝试使用 filezilla 连接到 ftp 服务器,并且仅在我选择普通 ftp 连接时才接受连接。

有没有办法通过 TIdFTP 使用不安全(无 TLS)连接?

非常感谢。

【问题讨论】:

  • 我认为这已经是默认设置了。为什么您认为 TLS 是您的代码失败的原因? (另外,如果它是您的服务器,如果您认为这是问题所在,为什么不启用 TLS?)
  • 是的,没有 TLS 是默认设置。您必须采取额外的步骤来启用 TLS,尤其是在 FTP 中,因为它使用多个连接。您的超时与其他事情有关。 Connect()(可能)发送许多 FTP 命令,其中任何一个都可能超时。如果不知道超时实际发生在哪里 - 建立套接字连接,发送命令或读取响应时,很难诊断此问题。我建议将TIdLog... 组件附加到TIdFTP.Intercept 属性并记录活动以查看Connect() 的距离
  • 我认为 TLS 是原因,因为当我尝试将它与 Filezilla 连接时,我得到“超时”,但是当我将连接更改为标准普通(不安全)时,它可以工作。我一直在与 CPD 提供商交谈以了解会发生什么,但他们也不知道……我将尝试找到如何在服务器中启用 TLS。谢谢。
  • 我去查看filezilla的日志,然后尝试使用Intercept。让我检查一下。谢谢

标签: delphi ftp


【解决方案1】:

我的服务器上的 ssl 证书似乎有问题,所以最后我编写了一个 php 函数来上传图片。

感谢您的支持。

【讨论】:

    最近更新 更多