unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdFTP; type
TForm1 = class(TForm)
IdFTP1: TIdFTP;
dlgOpen1: TOpenDialog;
btn1: TButton;
mmo1: TMemo;
btn2: TButton;
btn3: TButton;
edt1: TEdit;
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
procedure btn3Click(Sender: TObject);
procedure IdFTP1Status(ASender: TObject; const AStatus: TIdStatus;
const AStatusText: String);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.dfm}
uses IdFTPList, IdFTPCommon; //这个上传和下载 是 纯用 idftp 客户端 来达到 下载和上传的功能, 没有写到ftp服务端的东西 {
本程序是一个ftp demo程序,我用windows信息服务在本机建立了一个ftp服务,
本机IP:192.168.10.99
用户名:cc my
密码:1 qwert
}
procedure TForm1.btn1Click(Sender: TObject);
var
tr : Tstrings;
begin //连接
tr := TStringlist.Create;
//IdFTP1.Host := '192.168.10.99'; //FTP服务器地址
IdFTP1.Host := '127.0.0.1'; //FTP服务器地址
IdFTP1.Port:= ; //注意端口号,这里不是默认的21,而是你自己设定的值
IdFTP1.Username := 'my'; //FTP服务器用户名
IdFTP1.Password := 'qwert'; //FTP服务器密码 IdFTP1.Connect(); //连接到ftp edt1.Text := IdFTP1.RetrieveCurrentDir;//得到初始目录
//IdFTP1.ChangeDir('client'); //进入到client子目录
//IdFTP1.ChangeDir('..'); //回到上一级目录
IdFTP1.List(tr); //得到client目录下所有文件列表
mmo1.Lines.Assign(tr);
tr.Free;
end; procedure TForm1.btn2Click(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:= to IdFTP1.DirectoryListing.Count- 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,ExtractFilePath(Application.ExeName)+tfname,True,True); //下载到本地,并为覆盖,且支持断点续传
end;
end;
end; procedure TForm1.btn3Click(Sender: TObject);
var
fi : string;
begin //上传
if dlgOpen1.Execute then
begin
fi := dlgOpen1.FileName;
//IdFTP1.Put('f:/测试文档样本.rar','测试文档样本.rar');//上传,
IdFTP1.Put(fi,ExtractFileName(fi));
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.

delphi实现FTP上传与下载的更多相关文章

  1. FTP上传与下载

    1.连接 先假设一个ftp地址 用户名 密码       FTP Server: 192.168.1.125 User: administrator Password: abc123 2. 打开win ...

  2. windows下定时利用bat脚本实现ftp上传和下载

    前言: 工作中可能会遇到以下情况,利用windows作为中转,来实现两台linux服务器的文件传输. 实现步骤: 1.FTP上传和下载的bat脚本. 脚本分为两部分:可执行bat脚本和ftp命令文件: ...

  3. ftp上传或下载文件工具类

    FtpTransferUtil.java工具类,向ftp上传或下载文件: package utils; import java.io.File; import java.io.FileOutputSt ...

  4. 使用python操作FTP上传和下载

    函数释义 Python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于上传或下载文件,函数列举如下 ftp登陆连接 from ftplib import F ...

  5. Java 实现FTP上传和下载

    1. 目前网上开源的FTP Client主要有JFTP.FTP4.edtFtpjJ和Apache.FTPClient. 2. jftp地址:http://www.jmethods.com/ 3. ed ...

  6. ftp 上传和下载

    ftp 下载 #!/bin/bash #auth liwei #date DATE=$(date -d today +%Y%m%d) #data files path SRCDIR=/home/web ...

  7. C# ftp 上传、下载、删除

    public class FtpHelper { public static readonly FtpHelper Instance = new FtpHelper(); /// <summar ...

  8. 【Python学习 】Python实现的FTP上传和下载功能

    一.背景 最近公司的一些自动化操作需要使用Python来实现FTP的上传和下载功能.因此参考网上的例子,撸了一段代码来实现了该功能,下面做个记录. 二.ftplib介绍 Python中默认安装的ftp ...

  9. FTP上传和下载文件的应用

    FTP(File Transfer Protocol)协议主要用来在网络上进行文件传输.FTP通讯除了有一个默认的端口21外,还有其他端口,同城两个端口同时进行数据传输.一个是默认的端口(通常为21) ...

随机推荐

  1. redis : Can't save in background: fork: Cannot allocate memory

    redis : Can't save in background: fork: Cannot allocate memory JAVA程序报错信息: MISCONF Redis is configur ...

  2. Web系统测试的常用方法总结-18《转载》

    Web系统测试的常用方法归纳 --- 知识记录 1.页面链接检查 每一个链接是否都有对应的页面,并且页面之间切换正确.可以依靠一些工具,如:LinkBotPro.File-AIDCS.HTML Lin ...

  3. NOIP2016天天爱跑步解题思路

    算法:LCA,树上差分+(乱搞) 如果有写错的地方请大佬更正 对于100%数据: u表示起点,v表示终点 对于一条u到v的路径,先讨论LCA!=u&&LCA!=v的情况: 分为u到LC ...

  4. 基于云开发开发 Web 应用(三):云开发相关数据调用

    介绍 在完成了 UI 界面的实现后,接下来可以开始进行和云开发相关的数据对接.完成数据对接后,应用基础就打好了,接下来的就是发布上线以及一些小的 feature 的加入. 配置 在进行相关的配置调用的 ...

  5. tomcat conf目录下server.xml详解

    一.   一个server.xml配置实例 1 <Server port="8005" shutdown="SHUTDOWN"> 2 <Lis ...

  6. 高级js 变量提升以及自由变量

    Q首先一道题 if(false){ var a = 1; } console.log(a); //undefined //我以为输出ReferenceError: aa is not defined ...

  7. 电脑使用热键时是否需按住Fn键相关说明

    ThinkPad E系列机型 方法一: 在开机出现ThinkPad标志时,连续点F1(若无反应,请尝试Fn+F1)进入BIOS设置. 在BIOS中,依次选择Config---Keyboard/Mous ...

  8. POJ 3994:Probability One

    Probability One Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1674   Accepted: 1151 D ...

  9. 【pwnable.kr】random

    pwnable从入门到放弃第七题. ssh random@pwnable.kr -p2222 (pw:guest) 目前为止做的最快的一道题... #include <stdio.h> i ...

  10. CSS - input 美化

    input{ padding: 20px; width: 100%; height: 5vh; margin-bottom: 2vh; border-radius: 10vw; border: 0; ...