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 cluster时:undefined method `invoke_with_build_args' for nil:NilClass

    gem install -l redis-3.3.3.gem ERROR: Loading command: install (LoadError) cannot load such file -- ...

  2. XV6操作系统代码阅读心得(五):文件系统

    Unix文件系统 当今的Unix文件系统(Unix File System, UFS)起源于Berkeley Fast File System.和所有的文件系统一样,Unix文件系统是以块(Block ...

  3. Laravel框架的学习

    用xampp环境 1.Composer的安装 http://www.phpcomposer.com/ 下载Composer的安装exe php.ini中extension_dir.browscap路径 ...

  4. JS的数据类型、常量、变量、以及基本对象的知识总结

    第一部分.JS的常见数据类型,特别要注意的是JS中大小写要求很严格,一定要注意字段大小写. 1.字符串(String) 举例: var cellname = "Bill Gate" ...

  5. 杂记 -- 关于ref、kepp-alive、nextTick、fetch

    1.ref:定义一个普通的dom节点或一个vue的组件实例对象 定义方法: <div class="page1"> <button @click="li ...

  6. kafka 相关命令 偏移重置

    kafka官方文档 https://kafka.apache.org/documentation.html#quickstart kafka 安装文档 https://www.jianshu.com/ ...

  7. .NET via C#笔记5——基元类型,引用类型和值类型

    5 基元类型,引用类型和值类型 5.3 值类型的装箱和拆箱 将值类型转化为引用类型需要进行装箱(boxing) 赋值,传参等操作,如果从值类型转为引用类型,都会进行装箱 装箱的代价比较大 申请一块堆内 ...

  8. POJ 1320:Street Numbers

    Street Numbers Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 2753   Accepted: 1530 De ...

  9. #define、#undef、#ifdef、#ifndef、#if、#elif、#else、#endif、defined解释

    #define.#undef.#ifdef.#ifndef.#if.#elif.#else.#endif.defined. #define            定义一个预处理宏#undef     ...

  10. 使用模拟器调试react-native步骤(安卓机)

    1.在cmd界面搭建react-native 环境: 可参考https://reactnative.cn/docs/0.51/getting-started.html#content (1)npm i ...