在delphi中用indy实现FTP上传 下载的例子

         由于delphi本身自带了indy控件,因此用这些控件实现网络编程即快又容易。尽管如此,我还是极大地鼓励自己查看FTP底层是如何实现的,但就目前而言,indy控件还是一个非常不错的选择。
       针对indy的强大,我还是决定将这段代码帖出来,主要是方便自己日后复习、查询。
Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdFTP;

type
  TForm1 = class(TForm)
    IdFTP1: TIdFTP;
    Button1: TButton;
    Memo1: TMemo;
    Edit1: TEdit;
    Button2: TButton;
    Label1: TLabel;
    Button3: TButton;
    OpenDialog1: TOpenDialog;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure IdFTP1Status(ASender: TObject; const AStatus: TIdStatus;
      const AStatusText: String);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
uses IdFTPList, IdFTPCommon;
{$R *.dfm}
{
本程序是一个ftp  demo程序,我用windows信息服务在本机建立了一个ftp服务,
本机IP:192.168.10.99
用户名:cc
密码:1
}

procedure TForm1.Button1Click(Sender: TObject);
var
  tr : Tstrings;
begin  //连接
  tr := TStringlist.Create;
  IdFTP1.Host := ‘192.168.10.99‘; //FTP服务器IP地址or域名也可以
  IdFTP1.Username := ‘username‘; //FTP服务器用户名
  IdFTP1.Password := ‘password‘; //FTP服务器密码

  IdFTP1.Connect();  //连接到ftp

  Edit1.Text := IdFTP1.RetrieveCurrentDir;//得到初始目录
  IdFTP1.ChangeDir(‘client‘); //进入到client子目录
  //IdFTP1.ChangeDir(‘..‘); //回到上一级目录
  IdFTP1.List(tr); //得到client目录下所有文件列表
  Memo1.Lines.Assign(tr);
  tr.Free;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  tt :TIdFTPListItems;
  t : TIdFTPListItem;
  i : integer;
  tfname : String;
begin  //下载
  Label1.Caption := IdFTP1.DirectoryListing.Items[0].FileName;
  IdFTP1.TransferType := ftBinary; //指定为二进制文件  或文本文件ftASCII
  for i:=0 to IdFTP1.DirectoryListing.Count-1 do
  begin
    tt := IdFTP1.DirectoryListing; //得到当前目录下文件及目录列表
    t := tt.Items[i]; //得到一个文件相关信息
    Label1.Caption :=t.Text;  //取出一个文件信息内容
    tfname := t.FileName;
    showmessage(t.OwnerName+‘  ‘+t.GroupName+‘  ‘+t.FileName+‘   ‘+t.LinkedItemName);
    if IdFTP1.DirectoryListing.Items[i].ItemType = ditFile then //如果是文件
    begin
      IdFTP1.Get(tfname,‘d:\FTPtest\‘+tfname,True,True); //下载到本地,并为覆盖,且支持断点续传
    end;
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  fi : string;
begin  //上传
  if OpenDialog1.Execute then
  begin
     fi := OpenDialog1.FileName;
    IdFTP1.Put(‘f:\测试文档样本.rar‘,‘测试文档样本.rar‘);//上传,
  end;
end;

procedure TForm1.IdFTP1Status(ASender: TObject; const AStatus: TIdStatus;
  const AStatusText: String);
begin
  {case  AStatus of
    hsResolving  : showmessage(‘hsResolving‘);
    hsConnecting: showmessage(‘hsConnecting‘);
    hsConnected: showmessage(‘hsConnected‘);
    hsDisconnecting: showmessage(‘hsDisconnecting‘);
    hsDisconnected: showmessage(‘hsDisconnected‘);
    hsStatusText: showmessage(‘hsStatusText‘); 
    ftpTransfer: showmessage(‘文件传送完毕。‘);
    ftpReady: showmessage(‘准备传送文件....‘);
    ftpAborted: showmessage(‘传送失败‘);
  end;         }

  //showmessage(AStatusText);
end;

end.

时间: 2024-10-25 23:04:19

在delphi中用indy实现FTP上传 下载的例子的相关文章

python之实现ftp上传下载代码(含错误处理)

# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之实现ftp上传下载代码(含错误处理) #http://www.cnblogs.com/kaituorensheng/p/4480512.html#_label2 import ftplib import socket import os def ftpconnect(ftp_info): try: ftp = ftplib.FTP(ftp_info[0]) except (socket.er

python之模块ftplib(实现ftp上传下载代码)

# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之模块ftplib(实现ftp上传下载代码) #需求:实现ftp上传下载代码(不含错误处理) from ftplib import FTP def ftpconnect(): ftp_server='ftp.python.org' ftp=FTP() ftp.set_debuglevel(2)#打开调式级别2 ftp.connect(ftp_server,21) ftp.login('',''

python网络编程socket模块实现ftp上传下载

本实验实现ftp上传文件下载文件功能,并具有校验文件完整性,打印进度条功能, 主要练习socket,struct模块. ftp用户文件存放在user.json文件中 user.json文件内容 {"lisi": "abcdef", "hyh": "123456"} ftp客户端脚本ftpclient.py #!/usr/bin/python # --*-- coding: utf-8 --*-- import socket i

windows下ftp上传下载和一些常用命令

先假设一个ftp地址 用户名 密码 FTP Server: home4u.at.china.com User: yepanghuang Password: abc123 打开windows的开始菜单,执行“运行”命令,在对话框中输入ftp,按下“确定”按钮将会切换至DOS窗口,出现命令提示符 ftp>键入命令连接FTP服务器: ftp> open home4u.at.china.com (回车) 稍等片刻,屏幕提示连接成功: ftp> connected to home4u.china.

简单的FTP上传下载(java实现)

/** *阅读前请自己在win7上建立FTP主机 *具体步骤如:http://jingyan.baidu.com/article/574c5219d466c36c8d9dc138.html * 然后将以下FTP,username,password分别改成你的FTP ip地址 用户名 密码即可 * 本例子用了apche的commons-net-3.3.jar以方便FTP的访问 请手动buid -path * 待完成版 刷新按钮 登录 都还没有做 而且上传 下载 完成后都需要重新运行 * 2014-

C# FTP 上传 下载(汇总)

1.C# 上传下载ftp(支持断点续传) 2. C# FTP上传下载(支持断点续传)

java ftp上传下载

/** * Description: 从FTP服务器下载文件 * @param url FTP服务器hostname * @param port FTP服务器端口 * @param username FTP登录账号 * @param password FTP登录密码 * @param remotePath FTP服务器上的相对路径 * @param fileName 要下载的文件名 * @param localPath 下载后保存到本地的路径 * @return */ public static

FTP 上传下载工具类

import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.SocketException; import o

java做的比较完善的FTP上传下载文件服务器源码

Filename: ftp.java Author: leetsing(elove) Create date: 2004-08-30 Use: connect to FTP server,then upload and download file Modify date: 2004-09-05 add to upload file 2004-09-13 add to download file Copy right: Magisky Media Technology Co.,Ltd. *****