【问题标题】:Random file-name after ftp upload in delphi在delphi中ftp上传后的随机文件名
【发布时间】:2015-05-12 12:32:05
【问题描述】:

我正在开发一个需要将文件上传到服务器的应用程序。 我正在使用 delphi 和 TIDFtp 上传文件。

一切正常,除了上传后的文件名是随机生成的。 我机器中的文件名为

test.txt

上传后在服务器中命名为

如何解决这个问题?

这是我的代码:

IdFtp1.Host := 'host';
  IdFtp1.Username := 'uname';
  IdFtp1.Password := 'pass';
  IdFtp1.Connect;
  IdFtp1.Put('test.txt');
  IdFtp1.Disconnect;

【问题讨论】:

  • 回复:你的问题。 AWorkCount 为您提供到目前为止传输的总字节数,而不是总文件大小。 OnWorkBegin 给你AWorkCountMax,这是要上传的总大小。使用 AWorkCount 和 AWorkCountMax 您可以计算完成的百分比。
  • 是的,明白了!但不明白如何解决第一部分的问题!
  • 服务器软件和操作系统是什么?它为文件名生成 GUID 是有原因的。您是否联系过网站管理员了解原因?
  • 服务器是godaddy,操作系统是windows!
  • 如果您投反对票,请务必写下理由! @who-ever down-voted!

标签: delphi file-upload ftp indy


【解决方案1】:

Indy Put 方法有两个参数版本

试试这个

IdFtp1.Put('test.txt', 'remote-file.txt');

【讨论】:

  • 你让我开心了!!
  • @Priyabrata 很高兴我能帮上忙
  • @mjn:TIdFTP.Put() 的两个参数版本(实际上是一个带有 3 个可选参数的 4 参数版本)与 Priyabrata 已经在使用的版本相同。第二个参数是可选的。如果未指定,则从第一个参数中提取目标文件名。 Priyabrata 声称的原始症状不可能发生。例如,Indy 不生成 GUID,甚至临时文件名也不生成(TIdFTP.Put() 无论如何都不会生成)。
  • @mjn:唯一合理的结论是 1) FTP 服务器忽略了TIdFTP 指定的文件名并替换为自己的{guid}.tmp 文件名; 2) Priyabrata 的 FTP 客户端忽略了 FTP 服务器指定的文件名,代之以自己的{guid}.tmp 文件名;或 3) 这不是 Priyabrata 的真实代码,也许他实际上使用的是TIdFTP.StoreUnique() 而不是TIdFTP.Put()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-27
  • 1970-01-01
相关资源
最近更新 更多