Files
playbook/skills/tsl-api-reference/references/codegen/builtin/object/ftp.md
T
csh 9010829c6d feat(tsl-api-reference): expand and reorganize api catalog
Flatten builtin pages, add third-party and platform scopes, and import financial and data warehouse references.

Keep the existing generated index without rebuilding after signature normalization.
2026-08-10 18:26:24 +08:00

1142 lines
20 KiB
Markdown

# Object - FTP 文件传输
## `FTP`
声明:class
用于连接和登录 FTP 服务器,并管理远程目录、传输文件及发送服务器命令
### `create(host)`
声明:function
创建 FTP 实例
可见性:public
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `host` | string | 可选。字符串类型。如果指定了Host参数,会自动从配置文件中获取对应设置,自动连接并登录服务器 |
### `abort()`
声明:function
终止连接
可见性:public
返回:any
#### 示例
```tsl
obj := CreateObject("FTP");
obj.host := "ftp.tinysoft.com.cn";
obj.port := 20;
obj.username := username;
obj.password := password;
obj.connect();//连接服务器
obj.login();//登录服务器
return obj.Abort();
//终止连接成功,返回0
```
### `changeDir(a_dir_name)`
声明:function
改变FTP服务器上的当前目录
可见性:public
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `a_dir_name` | string | string,字符串类型,要切换到的目录 |
返回:any
#### 示例
```tsl
obj := CreateObject("FTP");
obj.host := "ftp.tinysoft.com.cn";
obj.port := 20;
obj.username := username;
obj.password := password;
obj.connect();//连接
obj.login();//登录
obj.changedir('/test');//将FTP服务器上的当前目录更改为"/test"
return obj.RetrieveCurrentDir();
//修改成功,当前目录应为"/test"
```
### `changeDirUp()`
声明:function
切换到FTP服务器上当前目录的父目录
可见性:public
返回:any
#### 示例
```tsl
obj := CreateObject("FTP");
obj.host := "ftp.tinysoft.com.cn";
obj.port := 20;
obj.username := username;
obj.password := password;
obj.connect();//连接
obj.login();//登录
obj.changedir('/test');//将FTP服务器上的当前目录更改为"/test"
obj.changeDirUp();//跳转到当前目录的上一级目录"/"
return obj.RetrieveCurrentDir();
//跳转成功,当前目录应为"/"
```
### `connect()`
声明:function
打开FTP连接
可见性:public
返回:any
#### 示例
```tsl
obj := CreateObject("FTP");
obj.host := "ftp.tinysoft.com.cn";
obj.port := 20;
obj.username := username;
obj.password := password;
return obj.connect();
//连接成功,返回0
```
### `crc(file_name, start_point, end_point)`
声明:function
计算FTP服务器上指定文件的CRC值。需要FTP服务器支持XCRC功能
可见性:public
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `file_name` | string | 字符串类型,指定的文件名 |
| `start_point` | int64 | 整数类型,计算CRC值的文件其实位置,默认为0 |
| `end_point` | int64 | 整数类型,计算CRC值的文件末尾位置,默认为0,当指定为0时,EndPoint认为是文件长度 |
返回:int64
### `delete(file_name)`
声明:function
删除FTP服务器上的文件
可见性:public
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `file_name` | string | 字符串类型,指定要删除的文件的名称 |
返回:any
#### 示例
```tsl
obj := CreateObject("FTP");
obj.host := "ftp.tinysoft.com.cn";
obj.port := 20;
obj.username := username;
obj.password := password;
//连接FTP服务器
obj.connect();
//登录
obj.Login();
//删除Test.txt文件
obj.delete("Test.txt");
//验证文件是否被删除
return obj.FileDate("Test.txt",0);
//获取文件时间,若无该文件,返回0
```
### `disconnectNotifyPeer()`
声明:function
断开并且通知服务器
可见性:public
返回:any
### `fileDate(file_name, s_gmt)`
声明:function
获得FTP服务器上文件的修改时间
可见性:public
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `file_name` | string | 字符串类型,指定要获得修改时间的文件的名称 |
| `s_gmt` | boolean | 布尔类型,指定返回的时间是否为格林尼治时间标准时间 |
返回:datetime
#### 示例
```tsl
obj := CreateObject("FTP");
obj.host := "ftp.tinysoft.com.cn";
obj.port := 20;
obj.username := username;
obj.password := password;
//连接FTP服务器
obj.connect();
//登录
obj.Login();
ret:= obj.FileDate("Test.txt",0);
return DateTimeToStr(ret);
//"2024-07-31 14:28:00"
```
### `get(source_file, dest, resume)`
声明:function
从FTP服务器上下载文件
可见性:public
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `source_file` | string | 执行FTP上要下载的源文件名称 |
| `dest` | TSLObj | TStream类型,下载文件的目标流对象。参考 TFileStream对象 |
| `resume` | boolean | 当设置为真实支持断点续传,否则重新下载文件 |
返回:any
#### 示例
```tsl
obj := CreateObject("FTP");
obj.host := "ftp.tinysoft.com.cn";
obj.port := 20;
obj.username := username;
obj.password := password;
//连接FTP服务器
obj.connect();
//登录
obj.Login();
obj.TryNATFastTrack := 1;
//下载文件
st := new TFileStream("","D:\\test\\1.txt",65535);
obj.get("FtpTest.txt",st,0);
//若下载成功,可在本机对应位置查看文件
```
### `help(help_contents, command)`
声明:function
获得FTP服务器命令以及其他帮助信息,使用FTP的HELP命令。必须在登陆连接后才可以使用Help函数
可见性:public
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `help_contents` | TStringList | 字符串类型,用于返回服务器的执行状态信息 |
| `command` | string | 可选。字符串类型,用于请求具体的命令的帮助信息,如HELP SITE |
返回:any
### `isServerMDTZAndListTForm()`
声明:function
指出FTP服务器是否支持FTP MDTM和LIST-T 命令
可见性:public
返回:boolean
### `list(dest, specifier, details)`
声明:function
从FTP服务器上下载文件
可见性:public
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `dest` | TStringList | 字符串列表类型,当前目录的文件和目录列表 |
| `specifier` | string | 字符串类型,当前目录下的目录名称或要列出的文件通配符(如’*.*’,’A.txt’等) |
| `details` | boolean | 布尔类型,是否返回详细的列表信息,包括文件大小,修改日期和文件所有者权限,组等 |
返回:any
#### 示例
```tsl
obj := CreateObject("FTP");
obj.host := "ftp.tinysoft.com.cn";
obj.port := 20;
obj.username := username;
obj.password := password;
//连接FTP服务器
obj.connect();
//登录
obj.Login();
AFiles := new TStringList();
//获取当前目录所有.txt文件信息
obj.List(AFiles,'*.txt',true);
return AFiles.GetText();
//字符串:
"-rw-r--r-- 1 1001 1001 17 Apr 09 16:07 test01.txt
-rw-r--r-- 1 1001 1001 0 Sep 16 2023 test02.txt
-rw-r--r-- 1 1001 1001 38 Jul 25 17:26 test03.txt"
```
### `login()`
声明:function
提供FTP连接的验证,此前必须制定Username和Password属性
可见性:public
返回:any
#### 示例
```tsl
obj := CreateObject("FTP");
obj.host := "ftp.tinysoft.com.cn";
obj.port := 20;
obj.username := username;
obj.password := password;
//连接FTP服务器
obj.connect();
//登录
obj.Login();
return obj.RetrieveCurrentDir();
//获取当前所在目录,若登录成功,则返回"/"
```
### `makeDir(dir_name)`
声明:function
在FTP服务器上创建目录
可见性:public
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `dir_name` | string | 字符串类型,要创建的目录名称 |
返回:any
#### 示例
```tsl
obj := CreateObject("FTP");
obj.host := "ftp.tinysoft.com.cn";
obj.port := 20;
obj.username := username;
obj.password := password;
//连接FTP服务器
obj.connect();
//登录
obj.Login();
obj.MakeDir("newDir");
//若创建成功,可在服务器中查看或使用FAQ:List 查看
```
### `noop()`
声明:function
向FTP服务器发送一个KEEP-ALIVE信号。服务器在长时间处于空闲状态下,使用NOOP方法可以防止服务器关闭连接
可见性:public
返回:any
### `put(source, dest_file, append)`
声明:function
上传文件到FTP服务器
可见性:public
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `source` | TStream | 流对象类型,包含要上传的数据 |
| `dest_file` | string | 字符串类型,远程服务器的目标文件名 |
| `append` | boolean | 布尔类型,为真时,服务器将上传到数据从已存在的文件末尾写入 |
返回:any
#### 示例
```tsl
obj := CreateObject("FTP");
obj.host := "ftp.tinysoft.com.cn";
obj.port := 20;
obj.username := username;
obj.password := password;
//连接FTP服务器
obj.connect();
//登录
obj.Login();
//构造TStream对象
filepath := "D:\\test\\Test.txt";
st := new TMemoryStream();
st.LoadFromFile("",filepath);
obj.Put(st,"put.txt",false);
//若上传成功,可在服务器中查看或使用FAQ:Get 下载后在本机查看
```
### `quit()`
声明:function
关闭FTP客户端连接。Quit用于文件未传输时关闭连接,如果一个文件传输进程正在进行,请优先使用Abort()
可见性:public
返回:any
### `quote(command)`
声明:function
用于执行在这个类中未实现的FTP命令
可见性:public
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `command` | string | 字符串类型,要执行的FTP命令 |
返回:integer
### `reInitialize(delay)`
声明:function
清除FTP客户端的账户及其设置信息
可见性:public
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `delay` | integer | 整数类型,延后时间 |
返回:integer
### `removeDir(dir_name)`
声明:function
移除FTP服务器上的目录
可见性:public
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `dir_name` | string | 字符串类型,FTP服务器上要移除的目录名称 |
返回:any
#### 示例
```tsl
obj := CreateObject("FTP");
obj.host := "ftp.tinysoft.com.cn";
obj.port := 20;
obj.username := username;
obj.password := password;
//连接FTP服务器
obj.connect();
//登录
obj.Login();
obj.Remove("testDir");
//若删除成功,可在服务器中查看或使用FAQ:List 查看
```
### `rename(source_file, dest_file)`
声明:function
重命名FTP服务器指定文件
可见性:public
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `source_file` | string | 字符串类型,源文件名 |
| `dest_file` | string | 字符串类型,新文件名 |
返回:any
#### 示例
```tsl
obj := CreateObject("FTP");
obj.host := "ftp.tinysoft.com.cn";
obj.port := 20;
obj.username := username;
obj.password := password;
//连接FTP服务器
obj.connect();
//登录
obj.Login();
obj.rename("testDir","newDir");
//若重命名成功,可在服务器中查看或使用FAQ:List 查看
```
### `resumeSupported()`
声明:function
指出服务器上是否支持REST命令
可见性:public
返回:boolean
### `setCmdOpt(cmd, options)`
声明:function
指定一个在FTP命令之后的行为
可见性:public
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `cmd` | string | 字符串类型,受到Options影响的命令 |
| `options` | string | 字符串类型,应用于FTP 会话的选项 |
返回:any
### `setLang(lang_tag)`
声明:function
请求以指定的语言返回响应的内容
可见性:public
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `lang_tag` | string | 字符串类型,FTP客户端的语言标记 |
返回:any
### `setModTime(file_name, local_time)`
声明:function
设置指定文件的最后修改时间
可见性:public
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `file_name` | string | 字符串类型,服务器上更新的文件名 |
| `local_time` | datetime | 时间类型,指定文件修改的时间值 |
返回:any
### `setModTimeGMT(file_name, gmt_time)`
声明:function
设置指定文件的最后修改时间
可见性:public
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `file_name` | string | 字符串类型,服务器上更新的文件名 |
| `gmt_time` | datetime | 时间类型,指定文件修改的时间值 |
返回:any
### `site(command)`
声明:function
发送一个FTP服务器端的命令
可见性:public
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `command` | string | 字符串类型,FTP服务器端命令名称。常常用来发发送没有包含在FTP协议中的服务器端命令。可以用HELP SITE命令查找指定FTP服务器的命令和语法信息 |
返回:any
### `size(file_name)`
声明:function
获得服务器上文件的大小信息
可见性:public
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `file_name` | any | file_name |
返回:int64
#### 示例
```tsl
obj := CreateObject("FTP");
obj.host := "ftp.tinysoft.com.cn";
obj.port := 20;
obj.username := username;
obj.password := password;
//连接FTP服务器
obj.connect();
//登录
obj.Login();
return obj.Size("test.txt");
//整数,18
```
### `status(status_list)`
声明:function
实现FTP的STAT命令
可见性:public
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `status_list` | TStringList | 字符串列表类型,服务器响应的连接、传输参数等状态 |
返回:any
### `Account`
声明:property
代表连接到远程FTP服务器的账户信息
可见性:public
类型:string
访问:read/write
### `AUTHCmd`
声明:property
表示登陆验证时使用的机制。这个属性的值决定在TSL握手协议中与FTP AUTH命令交换时使用的参数
可见性:public
类型:TAuthCmd
访问:read/write
### `AutoIssueFEAT`
声明:property
是否自动发送FEAT指令获得所支持的命令
可见性:public
类型:boolean
访问:read/write
### `AutoLogin`
声明:property
指定当使用Connect方法与FTP服务器建立会话时,FTP客户端是否自动连接
可见性:public
类型:boolean
访问:read/write
### `CanResume`
声明:property
表示服务器是否支持续传操作
可见性:public
类型:boolean
访问:read
### `CurrentTransferMode`
声明:property
表示当前FTP数据交换中有效的传输模式设置
可见性:public
类型:any
访问:read/write
### `DataPort`
声明:property
与客户端会话的数据通道绑定的端口号
可见性:public
类型:integer
访问:read/write
### `DataPortMax`
声明:property
FTP客户端数据通道的端口号上限
可见性:public
类型:integer
访问:read/write
### `DataPortMin`
声明:property
FTP客户端数据通道的端口号下限
可见性:public
类型:integer
访问:read/write
### `DirFormat`
声明:property
表示目录列表结构
可见性:public
类型:string
访问:read
### `ExternalIP`
声明:property
指定当客户端在一个NAT防火墙后发送PORT或者EPRT命令时使用的IP地址
可见性:public
类型:string
访问:read/write
### `Host`
声明:property
表示FTP服务器的IP地址或者主机名称
可见性:public
类型:string
访问:read/write
### `LangsSupported`
声明:property
返回服务器支持的语言列表
可见性:public
类型:TStringList
访问:read
### `LastCmdResult`
声明:property
最后一条命令的返回结果,包括命令返回状态字以及结果
可见性:public
类型:TStringList
访问:read
### `ListenTimeout`
声明:property
侦听成功的超时时间
可见性:public
类型:integer
访问:read/write
### `ListResult`
声明:property
最后一条LIST命令的返回
可见性:public
类型:TStringList
访问:read
### `Passive`
声明:property
指定FTP的数据通道连接方法,如果为真则采用被动模式
可见性:public
类型:boolean
访问:read/write
### `PassiveUseControlHost`
声明:property
如果设置为假,被动模式下依旧使用FTP的HOST属性,如果为真,则使用被动连接过来的对端IP地址。简单来说,如果设置为真,则允许分布式FTP服务,也就是对端可能是多个IP地址的FTP来发送或者接受数据
可见性:public
类型:boolean
访问:read/write
### `Password`
声明:property
登陆FTP服务器时用于认证的凭据
可见性:public
类型:string
访问:read/write
### `Port`
声明:property
用于在打开连接时用到的远程FTP服务器主机上指定的端口号
可见性:public
类型:integer
访问:read/write
### `ProxyHost`
声明:property
FTP代理的主机IP或名称
可见性:public
类型:string
访问:read/write
### `ProxyPassword`
声明:property
FTP代理服务器的登陆密码
可见性:public
类型:string
访问:read/write
### `ProxyPort`
声明:property
FTP代理服务器的端口号
可见性:public
类型:integer
访问:read/write
### `ProxyType`
声明:property
指定连接代理服务器时使用的方法。 0:使用代理服务器的CONNECT命令直接连接 1:采用USER命令,发送USER user@hostname串进行登录。 2:登录时发送SITE命令 3:发送OPEN命令 4:使用USER,PASS命令发送代理服务器的用户名密码,发送USER user@firewalluser@hostname 和 PASS pass@firewallpass 5:先使用USER,PASS命令使用代理服务器的用户名密码,穿透代理服务器,然后使用目标的用户名和密码 6:采用USER hostuserId@hostname firewallUsername模式。 7: Novell BorderManager Proxy
可见性:public
类型:integer
访问:read/write
### `ProxyUsername`
声明:property
FTP代理服务器的登陆用户名
可见性:public
类型:string
访问:read/write
### `ReadTimeout`
声明:property
客户端等待FTP连接响应时间的毫秒数
可见性:public
类型:integer
访问:read/write
### `RetrieveCurrentDir`
声明:property
获得服务器上当前目录的名称
可见性:public
类型:string
访问:read/write
### `SupportsVerification`
声明:property
表示FTP服务器是否支持完整性验证的扩展功能
可见性:public
类型:boolean
访问:read
### `SystemDesc`
声明:property
远程FTP服务器的操作系统的描述信息
可见性:public
类型:string
访问:read
### `TransferMode`
声明:property
实现FTP的MODE命令,设置FTP的传输模式,0为非压缩格式,1为压缩格式
可见性:public
类型:integer
访问:read/write
### `TransferTimeout`
声明:property
FTP客户端在数据通道进行读操作时的等待时间的毫秒数
可见性:public
类型:integer
访问:read/write
### `TransferType`
声明:property
指定传输类型,包括Binary(0)和ASCII(1),默认使用Binary方式进行传输
可见性:public
类型:integer
访问:read/write
### `TryNATFastTrack`
声明:property
指定是否使用“快速路径”连接穿越防火墙和地址转换器(NAT)
可见性:public
类型:any
访问:read/write
### `UseCCC`
声明:property
表示FTP客户端是否需要使用清除通道命令(CCC)
可见性:public
类型:boolean
访问:read/write
### `UseExtensionDataPort`
声明:property
指示在数据交换时是否使用了额外的IPV6端口以及是否设置为PASV模式
可见性:public
类型:boolean
访问:read/write
### `UseMLIS`
声明:property
指定当客户端试图获得目录列表时是否使用应该使用FTP的MLST或MLSD命令
可见性:public
类型:boolean
访问:read/write
### `Username`
声明:property
登陆FTP服务器时使用的身份验证ID
可见性:public
类型:string
访问:read/write
### `UseSTARTTLS`
声明:property
是否使用显式 TLS(即 STARTTLS 加密协议)
可见性:public
类型:boolean
访问:read/write
### `UseTLS`
声明:property
用于指定传输安全等级
可见性:public
类型:boolean
访问:read/write
### `UsingExtDataPort`
声明:property
表示客户端会话是否支持RFC 2428 NAT 扩展
可见性:public
类型:boolean
访问:read
### `UsingNATFastTrack`
声明:property
表示客户端会话是否使用了“快速路径”连接
可见性:public
类型:boolean
访问:read
### `UsingSFTP`
声明:property
表示客户端会话是否使用了安全FTP连接
可见性:public
类型:any
访问:read