delphi实现FTP上传与下载
由于delphi本身自带了indy控件,因此用这些控件实现网络编程即快又容易。尽管如此,我还是极大地鼓励自己查看FTP底层是如何实现的,但就目前而言,indy控件还是一个非常不错的选择。
针对indy的强大,我还是决定将这段代码帖出来,主要是方便自己日后复习、查询。
Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,IdTCPClient, IdFTP;typeTForm1 = 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;varForm1: TForm1;implementationuses IdFTPList, IdFTPCommon;{$R *.dfm}{本程序是一个ftp demo程序,我用windows信息服务在本机建立了一个ftp服务,本机IP:192.168.10.99用户名:cc密码:1
}procedure TForm1.Button1Click(Sender: TObject);
vartr : Tstrings;
begin //连接tr := TStringlist.Create;IdFTP1.Host := '192.168.10.99'; //FTP服务器地址IdFTP1.Username := 'cc'; //FTP服务器用户名IdFTP1.Password := '1'; //FTP服务器密码IdFTP1.Connect(); //连接到ftpEdit1.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);
vartt :TIdFTPListItems;t : TIdFTPListItem;i : integer;tfname : String;
begin //下载Label1.Caption := IdFTP1.DirectoryListing.Items[0].FileName;IdFTP1.TransferType := ftBinary; //指定为二进制文件 或文本文件ftASCIIfor i:=0 to IdFTP1.DirectoryListing.Count-1 dobegintt := 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 //如果是文件beginIdFTP1.Get(tfname,'d:/FTPtest/'+tfname,True,True); //下载到本地,并为覆盖,且支持断点续传end;end;
end;procedure TForm1.Button3Click(Sender: TObject);
varfi : string;
begin //上传if OpenDialog1.Execute thenbeginfi := OpenDialog1.FileName;IdFTP1.Put('f:/测试文档样本.rar','测试文档样本.rar');//上传,end;
end;procedure TForm1.IdFTP1Status(ASender: TObject; const AStatus: TIdStatus;const AStatusText: String);
begin{case AStatus ofhsResolving : 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上传与下载相关推荐
- windows下定时利用bat脚本实现ftp上传和下载
前言: 工作中可能会遇到以下情况,利用windows作为中转,来实现两台linux服务器的文件传输. 实现步骤: 1.FTP上传和下载的bat脚本. 脚本分为两部分:可执行bat脚本和ftp命令文件: ...
- [ASP.NET]web实现用FTP上传、下载文件(附源码)
文章配套源码下载地址:https://download.csdn.net/download/djk8888/10486581 index.aspx 页: <%@ Page Language=&q ...
- filezilla定时上传_windows下定时利用bat脚本实现ftp上传和下载
前言: 工作中可能会遇到以下情况,利用windows作为中转,来实现两台linux服务器的文件传输. 实现步骤: 1.FTP上传和下载的bat脚本. 脚本分为两部分:可执行bat脚本和ftp命令文件: ...
- sex 无需下载_elipse FTP插件 - Sexftp 支持FTP上传、下载、比较等功能
Sexftp简介 Sexftp是FTP上传与下载的eclipse插件,集成在ECLIPSE中,方便开发人员进行FTP相关操作,省去来回切换工具及选择目录的麻烦. Sexftp支持上传.下载等基本操作; ...
- C# FTP上传、下载、删除
01 - FTP概述 文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,作为一套古老的网络工具,在工业界有着及其广泛的应用.本节主要给大家演 ...
- winform实现FTP上传、下载、删除文件(附源码下载)
一个用winform开发的FTP上传.下载.删除文件的简单列子: 配套源码下载:https://download.csdn.net/download/djk8888/10473477 注释尽可能详尽, ...
- ftp 传输速度_ftp上传工具下载,8款优秀的ftp上传工具下载软件
FTP上传工具现在有很多种,而且各有各的特点,至于FTP上传工具哪个好用呢?小编认为萝卜白菜各有所爱,看个人喜好,还结合服务器和各种功能方面的需求.小编用的就是iis7服务器管理工具,比较方便而且功能 ...
- 3行代码实现ftp 上传、下载、删除操作集合
为了帮助小伙伴们便捷操作ftp,现对常用的上传.下载.删除功能进行封装,小伙伴只需要传入需要的参数操作即可!告诉小伙伴好消息,本项目我已开源,大家可以根据需要克隆run起来!!! 文章目录 一.集合总 ...
- 【Python学习 】Python实现的FTP上传和下载功能
一.背景 最近公司的一些自动化操作需要使用Python来实现FTP的上传和下载功能.因此参考网上的例子,撸了一段代码来实现了该功能,下面做个记录. 二.ftplib介绍 Python中默认安装的ftp ...
- c#实现ftp上传和下载
代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sy ...
最新文章
- 惩罚、补偿、正则化、约束的联系和区别
- Qt学习(三):事件、定时器、事件过滤器
- startup oracle 01012,ORA-01012:not logged on的解决办法
- python如何导入图片imread_OpenCV 使用imread()函数读取图片的六种正确姿势
- Protobuf生成Java代码(命令行)
- linux date -s_Linux炫技:左手密码生成器,解放右手生产力
- 模板引擎 Velocity
- python实现列表的排列和组合
- 逆向工具IDA安装教程
- 根据IP获取国家地区
- 汽车制造商代码表_汽车制造商合作打造未来汽车
- 高清卫星影像查看方法
- 在HTML中插入SVG的几种方式
- M415步进电机驱动器的使用(C51)
- 管理订单状态,该上状态机吗?轻量级状态机COLA StateMachine保姆级入门教程
- [原题复现]HCTF 2018 Warmup
- 邮件协议(POP3、IMAP、SMTP)
- 在金融业务中跨行清算系统的实现过程
- 我所知道的富士康之二:出门
- Python packing tools not found.
热门文章
- 如何打开caj文件?能转成PDF吗?
- 量化回测系统 股票回测系统 极简回测 策略开发
- 山大往年自招计算机系试题,山大自招现场:考生笔试说“容易”体测喊“难”...
- php数独,详解PHP如何实现数独求解
- 超好用的iOS设备管理软件——iMazing
- 光谱分析中的变量选择
- python中的get用法
- Day 2: 数据类型的使用,字符编码
- IDEA初学者 常用注解意思
- mysql tungsten_通过tungsten replicator实现mysql多主一从的备份架