使用Indy将文件上传到FTP服务器

绿色欧米茄

我无法使用Indy for Lazarus将文件上传到我的000webhost.com FTP服务器。我已经使用Windows命令提示符测试了ftp连接,并且工作正常。这些是我的设置(IdFTP):

IdFTP1.Host:='shabala.com';
IdFTP1.Passive:=True;
IdFTP1.TransferType:=ftBinary;
IdFTP1.Username:='******';
IdFTP1.Password:='******';
IdFTP1.Port:=21;

这是我用来调用TIdFTP组件IdFTP1的代码:

IdFTP1.Connect(True);
//IdFTP1.ChangeDir('/Sessions');
IdFTP1.Put(GetCurrentDir+'\'+Token+'.cmd',Token+'.cmd', False);
IdFTP1.Quit;
IdFTP1.Disconnect;

变量Token声明为:

Token: String; 

当我第一次运行该程序时,它一直保持冻结状态,并声明了TIdAntiFreeze组件以防止其冻结。因此,这就是现在发生的情况:有时程序运行正常,但没有文件传输到服务器(如果我尝试重复上传,它会给我EIdAlredyConnected错误),有时(如果我稍稍更改了代码,没什么多余的),它给了我一个带有奇怪消息的EIdProtocolReplyError。我试图捕获异常并让我的程序显示该消息,但我遇到了一些奇怪的字符:

$£ïtúÁÕÖIOO)€¶K...ÅõÞl%ÇðåÀ¨Á“§pp
A%~ßï7!ƑDªÉ[... O_£P *¡°z1K¢ħ€Î¨ERPö/
üð΃ç±ïpļƒÏƒ<Ò1ì
¿A {» (g {å¥r…Ž¹öÐR_JúѯuBûŸ€ŒPp6o¯c[Jgžã¿Èà¦Ä€VJþz'0è–`BO @ T

如果格式正确,则响应如下所示:

奇怪的反应

我无法将带格式的文本直接放在这里。

服务器工作正常,我尝试上传到的目录更改为777,我发现文件的大小(我要上传)不大于3 KB。

有任何想法吗?

克里斯蒂安·霍尔姆·约根森

这些年来,我在Indy Ftp方面有些挣扎。在某个时候,我转向了OverbyteIcs的另一个(免费)Ftp客户端(单击“ ICS”,然后单击“下载ICS-V8.16”(2015年4月))如果您不反对使用免费软件包,则以下代码将完成此工作:

uses
  ...
  OverbyteIcsFtpCli;

procedure FtpUploadFile( 
                             HostName: String; 
                             UserName: String; 
                             Password: String; 
                             UploadFileName: String; 
                             ToHostDir : String );
var
  FTP: TFtpClient;
begin
  FTP := TFtpClient.Create(nil);
  try
    FTP.HostName := HostName;
    FTP.Passive := True;
    FTP.Binary := True;
    FTP.Username := UserName;
    FTP.Password := Password;
    FTP.Port := '21';

    if not FTP.Open then
      raise Exception.Create('Failed to connect: ' + FTP.ErrorMessage);

    if (not FTP.User) or (not FTP.Pass) then 
      raise Exception.Create('Failed to login: ' + FTP.ErrorMessage);

    FTP.HostDirName := ToHostDir;
    if not FTP.Cwd then
      raise Exception.Create('Failed to change dir: ' + FTP.ErrorMessage);

    FTP.LocalFileName := UploadFileName;
    FTP.HostFileName := ExtractFileName(UploadFileName);

    if not FTP.Put then
      raise Exception.Create('Failed to upload file: ' + FTP.ErrorMessage);
  finally
    FTP.Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   FtpUploadFile('rubilaxe.hostoi.com',  
                     '******', '******',
                     IncludeTrailingPathDelimiter( 
                          ExtractFilePath(Application.ExeName) ) +'datafile.zip',
                     '/files'  );
end;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用文件上传控制器将pdf文件上传到ftp服务器?

来自分类Dev

如何将文件上传到ftp服务器?

来自分类Dev

将文件上传到ftp服务器时出错

来自分类Dev

将文件夹上传到FTP服务器

来自分类Dev

将文件上传到ftp服务器时出错

来自分类Dev

如何将文件上传到ftp服务器?

来自分类Dev

使用php使用FTP将文件上传到服务器

来自分类Dev

c#使用FTP将本地文件上传到服务器。C#文件位于服务器上

来自分类Dev

如何使用filezilla ftp将文件上传到apache服务器根文档目录?

来自分类Dev

如何使用批处理脚本将文件上传到FTP服务器?

来自分类Dev

如何使用批处理脚本将文件上传到FTP服务器?

来自分类Dev

使用 WebClient 将文件目录上传到 FTP 服务器

来自分类Dev

将文件上传到服务器

来自分类Dev

将文件上传到服务器

来自分类Dev

使用curl将文件上传到django服务器

来自分类Dev

使用AJAX将Zip文件上传到服务器

来自分类Dev

使用python将文件上传到Django服务器

来自分类Dev

无法使用curl将文件上传到服务器

来自分类Dev

使用NSURLSessionUploadTask将文件上传到PHP服务器

来自分类Dev

使用js将文件上传到服务器

来自分类Dev

使用AJAX将文件上传到服务器

来自分类Dev

使用python将文件上传到瓶子服务器

来自分类Dev

无法使用PHP将文件上传到服务器

来自分类Dev

使用Spring Spring将文件直接上传到ftp服务器中的特定文件夹

来自分类Dev

使用php将多个文件上传到服务器,而不将所有文件上传到服务器

来自分类Dev

使用php将多个文件上传到服务器,而不将所有文件上传到服务器

来自分类Dev

Ajax将文件从浏览器上传到FTP服务器

来自分类Dev

在特定文件夹位置将文件上传到FTP服务器

来自分类Dev

文件不上传到FTP服务器

Related 相关文章

  1. 1

    如何使用文件上传控制器将pdf文件上传到ftp服务器?

  2. 2

    如何将文件上传到ftp服务器?

  3. 3

    将文件上传到ftp服务器时出错

  4. 4

    将文件夹上传到FTP服务器

  5. 5

    将文件上传到ftp服务器时出错

  6. 6

    如何将文件上传到ftp服务器?

  7. 7

    使用php使用FTP将文件上传到服务器

  8. 8

    c#使用FTP将本地文件上传到服务器。C#文件位于服务器上

  9. 9

    如何使用filezilla ftp将文件上传到apache服务器根文档目录?

  10. 10

    如何使用批处理脚本将文件上传到FTP服务器?

  11. 11

    如何使用批处理脚本将文件上传到FTP服务器?

  12. 12

    使用 WebClient 将文件目录上传到 FTP 服务器

  13. 13

    将文件上传到服务器

  14. 14

    将文件上传到服务器

  15. 15

    使用curl将文件上传到django服务器

  16. 16

    使用AJAX将Zip文件上传到服务器

  17. 17

    使用python将文件上传到Django服务器

  18. 18

    无法使用curl将文件上传到服务器

  19. 19

    使用NSURLSessionUploadTask将文件上传到PHP服务器

  20. 20

    使用js将文件上传到服务器

  21. 21

    使用AJAX将文件上传到服务器

  22. 22

    使用python将文件上传到瓶子服务器

  23. 23

    无法使用PHP将文件上传到服务器

  24. 24

    使用Spring Spring将文件直接上传到ftp服务器中的特定文件夹

  25. 25

    使用php将多个文件上传到服务器,而不将所有文件上传到服务器

  26. 26

    使用php将多个文件上传到服务器,而不将所有文件上传到服务器

  27. 27

    Ajax将文件从浏览器上传到FTP服务器

  28. 28

    在特定文件夹位置将文件上传到FTP服务器

  29. 29

    文件不上传到FTP服务器

热门标签

归档