请问:我怎么能直接读取访问ftp上的文件?请大家指点。

时间:2022-07-17 03:43:11
我在远程服务器上有一个ftp空间,有一个固定目录,用户名和密码。请问我怎么能写一个程序,实现ftp的功能,不仅登陆ftp,还能直接访问ftp的文件,不用下载到本地。
    请指点,谢谢。

10 个解决方案

#1


参考我的blog http://blog.csdn.net/liuxiaoyi666 vb利用ftp实现上传下载

#2


//不仅登陆ftp,还能直接访问ftp的文件,不用下载到本地
不下载怎么访问?不可能

#3


INET控件
With Inet1
   .URL = "ftp://ftp.someFTPSite.com"
   .UserName = "John Smith"
   .Password = "mAuI&9$6"
   .Execute ,"DIR"   '返回该目录。
   .Execute ,"CLOSE" '关闭连接。
End With

在调用 Execute 方法之后,FTP 连接仍旧打开着。这时可以继续使用 Execute 方法完成其它 FTP 操作,比如 CD 和 GET。如果会话已经完成,使用 Execute 方法执行 CLOSE 操作以关闭连接。也可以通过改变 URL 属性,并调用 OpenURL 或 Execute 方法,自动关闭该连接,这样的操作会关闭当前 FTP 连接,并打开新的 URL。

操作 描述 示例 
CD file1 改变目录。改变到由 file1 指定的目录中。 Execute , "CD docs\mydocs"
 
CDUP 改变到父目录。功能与“CD ..”相同。 Execute , "CDUP"
 
DELETE file1 删除由 file1 指定的文件。 Execute , "DELETE discard.txt"
 
DIR [file1] 在由 file1 指定的目录中查找。如果没有指定 file1 目录,则查找当前工作目录。使用 GetChunk 方法返回数据。 Execute , "DIR /mydocs"
 
GET file1 file2 获取由 file1 指定的远程文件,并创建由 file2 指定的新的本地文件。 Execute , _
"GET getme.txt C:\gotme.txt"

 
MKDIR file1 创建由 file1 指定的目录。是否能够成功地执行,取决于用户在远程主机上的权限。 Execute , "MKDIR /myDir"
 
PUT file1 file2 将由 file1 指定的本地文件,复制到由 file2 指定的远程主机文件中。 Execute , _
"PUT C:\putme.txt /putme.txt"

 
PWD 打印工作目录。返回当前目录的名称。用 GetChunk 方法返回数据。 Execute , "PWD"
 
QUIT 结束当前连接。 Execute , "QUIT"
 
RECV file1 file2 与 GET 相同。 Execute , _
"RECV getme.txt C:\gotme.txt"

 
RENAME file1 file2 文件重命名。是否能够成功地执行,取决于用户在远程主机上的权限。 Execute , 
"RENAME old.txt new.txt"

 
RMDIR file1 删除目录。是否能够成功地执行,取决于用户在远程主机上的权限。 Execute , "RMDIR oldDir"
 
SEND file1 将文件复制到 FTP 站点。(与 PUT 相同) Execute , _
"SEND C:\putme.txt /putme.txt"

 
SIZE file1 返回由 file1 指定文件的大小。 Execute "SIZE /largefile.txt"

#4


VB程序员的FTP编程指南1.1-文件传输协议FTP概述    qianqian(翻译)  
  
关键字     VB,FTP 
  
出处     http://www.1000vb.net 
  

专 题:文件传输协议FTP概述
主 讲:qianqian 

FTP简介
直到1994年,当WWW掌管Internet时,文件传输协议(FTP)是和e-mail一样最广泛应用的Internet客户程序。它被用于作为访问Internet主机文件的一个远程外壳。使用ftp可以连接到一个FTP服务器,在可用的目录间游历,并且传输文件。

一个FTP站点可以是公用的,私有的,或者两者兼有之。使用一个私有的账号,你可以拥有访问整个网络的目录结构,或者只是特定的区域的权限。

Internet同时也是一个拥有很多允许任何人连接和传输文件的FTP服务器的中心,不管他们有没有主机上的账号。这叫做匿名FTP。当你登录到一个匿名FTP战点时,你通常使用“anonymous”作为你的用户名,“guest”或你的 e-mail地址作为密码。例如,匿名FTP经常用于发布大量的公用领域或共享软件。其中一个著名的公用FTP站点是ftp.cica.indiana.edu。

FTP主要设计目的是用于程序之中,不过FTP程序自身已经成为任何一个TCP/IP实施的重要部分。当你在Windows 3.11、Windows95或Windows NT中使用Microsoft的TCP/IP驱动程序时,FTP.exe将被安装。

实际上,FTP已经包含于Netscape和其它的WWW浏览器中,因此你可以使用浏览Web的程序同时浏览FTP服务器。

根据RFC 959所述,设计FTP协议有四个目的:

1. 促进文件的共享(计算机程序或数据)。 
2. 鼓励间接地或暗示性地(通过程序)使用远程计算机  
3. 把用户隐蔽在主机文件系统的多变性之外 
4. 为了传输文件的可靠性和效率 
为什么你要使用FTP?
如果你正在编写一个要进行相当数量的文件传输的程序,并且考虑使用FTP作为你的主要文件传输方式,你必须知道一些事情。首先,FTP是一个客户机/服务器协议。使用FTP在同一台机器把一个程序的文件传送到另外一个程序的做法是不可取的。你只能在要把文件传输到一个已知的FTP服务器的情况下才能考虑使用FTP,或者你想要编写一个通用的FTP客户程序。

有时候你可以把FTP服务器作为一个仓库来存贮你的系统中所有用户共享的文件,这是个不错的主意。它完全取决于你的项目目标是什么。如果你要让你的用户访问一系列的共享文件,FTP是一个不错的工具。

FTP没有类似VB的Open, Input #, 和 Print #等文件控制语句。如果你的项目需要你打开一个远程的文件并在文件层次打开它,FTP是无能为力的。FTP主要用于获得目录列表和传输文件。

 FTP程序
Windows有内建的FTP程序FTP.EXE,如图1,它是一个DOS程序。


图 1  FTP 窗口.

连接和登录
运行FTP.EXE后将看到如下的提示符:

ftp> _

你可以用OPEN命令连接任何FTP站点。例如,你可以使用以下命令连接到Microsoft的公共FTP站点:

ftp> open ftp.microsoft.com <enter>


此时程序将尝试在21号端口连接到服务器。如果连接成功,你将得到一个220的回答,后面是欢迎信息。

Connected to ftp.microsoft.com.
220 ftp Microsoft FTP Service (Version 1.0).

下面你将提示输入你的用户名。对于公共访问(匿名FTP),直接打anonymous即可:

User (ftp.microsoft.com:(none)): anonymous
331 Anonymous access allowed, send identity (e-mail name) as password.

下面是输入密码。如果是匿名访问输入你的EMail地址即可。

Password:

然后服务器将允许你的访问,并提示另外的欢迎信息。你可以使用一系列固定的命令来访问站点。

230-This is ftp.microsoft.com.  See the index.txt file
 in the root directory for more information
230 Anonymous user logged in as anonymous.

专 题:列出、改变目录
主 讲:qianqian 

列出目录
你可以使用DIR命令来列出目录。实际上,DIR并不是FTP规定的命令,但是标准的用户界面从操作系统借用了这个命令。

图2 显示了DIR命令的结果。最右边是文件或目录的名称,然后是文件日期和时间。然后是10位的文件属性。你可以通过"d"属性分别目录或文件。如果是"d",表示这是个目录。

改变目录
你可以通过CD命令改变目录。和DOS命令的区别是它使用正斜杠。例如改变目录到 /developr/vb directory:

ftp> cd developr/vb
250 CWD command successful.

再次使用DIR命令,你可以获得文件列表。图3 显示了 DIR命令在ftp.microsoft.com的 /developr/vb 目录的执行结果。


--------------------------------------------------------------------------------

图 2 DIR命令

ftp>dir
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
d-----     1 owner group       0   Jul  3 13:52    bussys
d-----     1 owner group       0   Aug  9  3:00    deskapps
d-----     1 owner group       0   Oct 27  7:35    developr
-----      1 owner group    7905   Oct  5  8:53    dirmap.htm
-----      1 owner group    4510   Oct  5  8:52    dirmap.txt
-----      1 owner group     712   Aug 25  1994    disclaimer.txt
-----      1 owner group     860   Oct  5  1994    index.txt
d-----     1 owner group           Aug 31  12:17   KBHelp
-----      1 owner group 7393252   Nov 28  4:04    ls-lR.txt
-----      1 owner group  914179   Nov 28  4:05    ls-lR.Z
-----      1 owner group  766409   Nov 28  4:04    LS-LR.ZIP
d-----     1 owner group       0   Oct 20  9:27    MSCorp
-----      1 owner group   28160   Nov 28  1994    MSNBRO.DOC
-----      1 owner group   22641   Feb  8  1994    MSNBRO.TXT
d-----     1 owner group       0   Oct 11  3:00    peropsys
d-----     1 owner group       0   Aug 23  21:55   Products
d-----     1 owner group       0   Oct  5  8:46    Services
d-----     1 owner group       0   Nov 22  14:38   Softlib
-----      1 owner group    5095   Oct 20  1993 support-phones.txt
-----      1 owner group     802   Aug 25  1994    WhatHappened.txt
226 Transfer complete.
1407 bytes received in 0.99 seconds (1.42 Kbytes/sec)


--------------------------------------------------------------------------------

图 3 Microsoft的/developr/vb directory目录

ftp> dir
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
d-----        1 owner group               0 Oct 25  6:39 kb
d-----        1 owner group               0 Feb 24 11:35 public
-----         1 owner group            1571 Aug 24  1994 README.TXT
d-----        1 owner group               0 Aug 24  1994 unsup-ed
226 Transfer complete.
270 bytes received in 0.22 seconds (1.23 Kbytes/sec)
 
下载
用ftp下载文件简单而直接。在下载之前,请保证你是在二进制模式下。ftp有两种文件传输模式,ASCII模式和二进制模式。为了转换到二进制模式,可以使用BIN命令。

ftp> bin
200 Type set to I.

返回ASCII模式,请使用ASC命令。

GET命令用来获取文件。如果你想在默认目录使用原始文件名下载文件,你要输入GET <filename> <回车>. 见图4。

你可以只输入GET,系统会提示你要下载的文件名,然后提示你存储到的新文件名(及目录)。


--------------------------------------------------------------------------------

图 4 Get命令

ftp> get readme.txt
200 PORT command successful.
150 Opening BINARY mode data connection for readme.txt(1571 bytes).
226 Transfer complete.
1571 bytes received in 3.46 seconds (0.45 Kbytes/sec)


--------------------------------------------------------------------------------

上传
你可以使用SEND命令上传文件。当然服务器要允许你上传文件才行。如图5。


--------------------------------------------------------------------------------

图 5 SEND命令发送文件.

ftp> send
(local-file) myfile.zip
(remote-file) myfile.zip
200 PORT command successful.
150 Opening BINARY mode data connection for myfile.zip.
226 Transfer complete.
3018 bytes sent in 0.06 seconds (50.30 Kbytes/sec)
支持命令
你可以使用HELP命令获得你的ftp程序支持的命令列表,如图6。


--------------------------------------------------------------------------------

图 6 Help命令

ftp>help
Commands may be abbreviated.  Commands are:

!            delete         literal prompt     send
?            debug          ls      put        status
append       dir            mdelete pwd        trace
ascii        disconnect     mdir    quit       type
bell         get            mget    quote      user
binary       glob           mkdir   recv       verbose
bye          hash           mls     remotehelp
cd           help           mput    rename
close        lcd            open    rmdir
ftp>

结束会话
在FTP提示符输入BYE可以结束会话。

ftp> bye
<the server disconnects the client>


--------------------------------------------------------------------------------

其它说明
你给FTP程序输入的命令和FTP实际传输给FTP服务器的命令有一点不同。例如你输入DIR命令时,实际上FTP程序传给FTP服务器的是LIST命令。以下提到FTP时将指FTP协议,除非另外说明。

FTP中,端口21(控制连接)将用于传

#5


FTP命令
FTP使用一系列简单的命令例如LIST或RETR来完成不同的任务。每一个FTP命令用CR/LF(回车)结束。


服务器反馈
在发送FTP命令后,你将收到服务器的回应。回应信息由3位数字加空格加上一段文字信息组成。图7 列出了一些回应信息。完整的描述可以参考RFC 959文档。


--------------------------------------------------------------------------------

图 7 返回值.

110 重启动标记回应(Restart marker reply).
    它这样显示:
    MARK yyyy = mmmm
    yyyy是用户处理的数据流标记,而mmmm是服务器的相应标记(注意标记和“=”之间的空格).
120 服务在nnn分钟内就绪.
125 数据连接已经打开,;传输开始.
150 文件状态OK;将要打开数据连接.
200 命令OK.
202 命令未实现,在这个站点是多余的.
211 系统状态或系统帮助的回应.
212 目录状态.
213 文件状态.
214 帮助信息.
215 NAME系统类型.
220 服务对新用户就绪.
221 服务关闭控制连接.
    如果合适的话推出登录.
225 数据连接打开,没有数据在传输.
226 关闭数据连接.
    需要的文件操作完成。.
227 进入Passive模式(h1,h2,h3,h4,p1,p2).
230 用户登入,已处理.
250 文件操作动作OK,完成.
257 “PATHNAME”已经创建.
331 用户名OK,需要密码.
332 需要登录帐号.
350 需要进行的文件操作延迟,进一步的信息.
421 服务不可用,关闭控制连接.
    当服务必须关闭时,这个回复可能适用任何目录.
425 无法打开数据连接.
426 连接关闭;传输异常中止.
450 需要进行的文件操作没有被接受.
    文件不可用 (例如,文件忙).
451 操作中止;处理时发生本地错误.
452 操作未接受.
    系统存储空间不足.
500 语法错误,无法识别命令.
    可能包括命令太长等错误.
501 参数语法错误.
502 命令未实现.
503 命令顺序错误.
504 对于该参数命令未实现.
530 未登录.
532 存储文件需要帐号.
550 需要的操作未被接受.
    文件不可用 (例如,文件未找到).
551 需要的操作异常中止;页类型未知.
552 需要的操作异常中止.
    超过了存储分配空间 (对于当前目录或数据集).
553 需要的操作未被接受.
    文件名不被允许.


--------------------------------------------------------------------------------

返回值类别
每一位返回值数字具有特别的含义。第一位数字有5个取值: 1 表示一个肯定的,初步的回答(这个命令被接受,并且这是其它服务器肯定回答的第一部分);2 表示一个永久的肯定回答; 3 表示一个中间层次的肯定回答,在这种情况下,服务器正在等待进一步的信息; 4 表示命令未被接受,需要的操作没有出现,担这种情况可能是暂时的; 5 表示绝对的失败。

第二个数字表示回答的类别: 0 表示语法错误; 1 表示信息内容; 2 表示有关传输链路的信息; 3 指验证或帐号信息; 4 未使用; 5 表示有关文件系统状态的信息。

第三个数字再对错误具体分类。

图 8 显示了如何分析FTP回复值的简要回顾,如果要详细的讨论,请参考RFC 959。


--------------------------------------------------------------------------------

图 8 解释 FTP返回值.

1xx     肯定的初步的回答
2xx     肯定回答
3xx     肯定的中间回答
4xx     短暂的否定的完成回答
5xx     永久的否定的完成回答

x0x     语法错误
x1x     信息
x2x     连接
x3x     验证和帐号
x4x     未规定
x5x     文件系统

#6


谢谢viena
但是一定要下载下来才能读取文件的内容吗?有没有可能直接从服务器上读取?

#7


With Inet1
    .URL = "ftp://10.28.48.150/space/cmo01/agr_eco/agr_eco/AB/"
    .UserName = "agr_eco"
    .Password = "aems"
    .Execute , "DIR"  '返回该目录。
    .Execute , "CLOSE" '关闭连接。
     .Execute , "GET ABWA20050101.txt D:\gotme.txt"      
End With

我运行了以上程序怎么什么反映都没有呢?我对inet控件不太熟悉

#8


学习

#9


我就是在向各位学习啊,你要是知道就请告诉我吧,谢谢了。

#10


学习

#1


参考我的blog http://blog.csdn.net/liuxiaoyi666 vb利用ftp实现上传下载

#2


//不仅登陆ftp,还能直接访问ftp的文件,不用下载到本地
不下载怎么访问?不可能

#3


INET控件
With Inet1
   .URL = "ftp://ftp.someFTPSite.com"
   .UserName = "John Smith"
   .Password = "mAuI&9$6"
   .Execute ,"DIR"   '返回该目录。
   .Execute ,"CLOSE" '关闭连接。
End With

在调用 Execute 方法之后,FTP 连接仍旧打开着。这时可以继续使用 Execute 方法完成其它 FTP 操作,比如 CD 和 GET。如果会话已经完成,使用 Execute 方法执行 CLOSE 操作以关闭连接。也可以通过改变 URL 属性,并调用 OpenURL 或 Execute 方法,自动关闭该连接,这样的操作会关闭当前 FTP 连接,并打开新的 URL。

操作 描述 示例 
CD file1 改变目录。改变到由 file1 指定的目录中。 Execute , "CD docs\mydocs"
 
CDUP 改变到父目录。功能与“CD ..”相同。 Execute , "CDUP"
 
DELETE file1 删除由 file1 指定的文件。 Execute , "DELETE discard.txt"
 
DIR [file1] 在由 file1 指定的目录中查找。如果没有指定 file1 目录,则查找当前工作目录。使用 GetChunk 方法返回数据。 Execute , "DIR /mydocs"
 
GET file1 file2 获取由 file1 指定的远程文件,并创建由 file2 指定的新的本地文件。 Execute , _
"GET getme.txt C:\gotme.txt"

 
MKDIR file1 创建由 file1 指定的目录。是否能够成功地执行,取决于用户在远程主机上的权限。 Execute , "MKDIR /myDir"
 
PUT file1 file2 将由 file1 指定的本地文件,复制到由 file2 指定的远程主机文件中。 Execute , _
"PUT C:\putme.txt /putme.txt"

 
PWD 打印工作目录。返回当前目录的名称。用 GetChunk 方法返回数据。 Execute , "PWD"
 
QUIT 结束当前连接。 Execute , "QUIT"
 
RECV file1 file2 与 GET 相同。 Execute , _
"RECV getme.txt C:\gotme.txt"

 
RENAME file1 file2 文件重命名。是否能够成功地执行,取决于用户在远程主机上的权限。 Execute , 
"RENAME old.txt new.txt"

 
RMDIR file1 删除目录。是否能够成功地执行,取决于用户在远程主机上的权限。 Execute , "RMDIR oldDir"
 
SEND file1 将文件复制到 FTP 站点。(与 PUT 相同) Execute , _
"SEND C:\putme.txt /putme.txt"

 
SIZE file1 返回由 file1 指定文件的大小。 Execute "SIZE /largefile.txt"

#4


VB程序员的FTP编程指南1.1-文件传输协议FTP概述    qianqian(翻译)  
  
关键字     VB,FTP 
  
出处     http://www.1000vb.net 
  

专 题:文件传输协议FTP概述
主 讲:qianqian 

FTP简介
直到1994年,当WWW掌管Internet时,文件传输协议(FTP)是和e-mail一样最广泛应用的Internet客户程序。它被用于作为访问Internet主机文件的一个远程外壳。使用ftp可以连接到一个FTP服务器,在可用的目录间游历,并且传输文件。

一个FTP站点可以是公用的,私有的,或者两者兼有之。使用一个私有的账号,你可以拥有访问整个网络的目录结构,或者只是特定的区域的权限。

Internet同时也是一个拥有很多允许任何人连接和传输文件的FTP服务器的中心,不管他们有没有主机上的账号。这叫做匿名FTP。当你登录到一个匿名FTP战点时,你通常使用“anonymous”作为你的用户名,“guest”或你的 e-mail地址作为密码。例如,匿名FTP经常用于发布大量的公用领域或共享软件。其中一个著名的公用FTP站点是ftp.cica.indiana.edu。

FTP主要设计目的是用于程序之中,不过FTP程序自身已经成为任何一个TCP/IP实施的重要部分。当你在Windows 3.11、Windows95或Windows NT中使用Microsoft的TCP/IP驱动程序时,FTP.exe将被安装。

实际上,FTP已经包含于Netscape和其它的WWW浏览器中,因此你可以使用浏览Web的程序同时浏览FTP服务器。

根据RFC 959所述,设计FTP协议有四个目的:

1. 促进文件的共享(计算机程序或数据)。 
2. 鼓励间接地或暗示性地(通过程序)使用远程计算机  
3. 把用户隐蔽在主机文件系统的多变性之外 
4. 为了传输文件的可靠性和效率 
为什么你要使用FTP?
如果你正在编写一个要进行相当数量的文件传输的程序,并且考虑使用FTP作为你的主要文件传输方式,你必须知道一些事情。首先,FTP是一个客户机/服务器协议。使用FTP在同一台机器把一个程序的文件传送到另外一个程序的做法是不可取的。你只能在要把文件传输到一个已知的FTP服务器的情况下才能考虑使用FTP,或者你想要编写一个通用的FTP客户程序。

有时候你可以把FTP服务器作为一个仓库来存贮你的系统中所有用户共享的文件,这是个不错的主意。它完全取决于你的项目目标是什么。如果你要让你的用户访问一系列的共享文件,FTP是一个不错的工具。

FTP没有类似VB的Open, Input #, 和 Print #等文件控制语句。如果你的项目需要你打开一个远程的文件并在文件层次打开它,FTP是无能为力的。FTP主要用于获得目录列表和传输文件。

 FTP程序
Windows有内建的FTP程序FTP.EXE,如图1,它是一个DOS程序。


图 1  FTP 窗口.

连接和登录
运行FTP.EXE后将看到如下的提示符:

ftp> _

你可以用OPEN命令连接任何FTP站点。例如,你可以使用以下命令连接到Microsoft的公共FTP站点:

ftp> open ftp.microsoft.com <enter>


此时程序将尝试在21号端口连接到服务器。如果连接成功,你将得到一个220的回答,后面是欢迎信息。

Connected to ftp.microsoft.com.
220 ftp Microsoft FTP Service (Version 1.0).

下面你将提示输入你的用户名。对于公共访问(匿名FTP),直接打anonymous即可:

User (ftp.microsoft.com:(none)): anonymous
331 Anonymous access allowed, send identity (e-mail name) as password.

下面是输入密码。如果是匿名访问输入你的EMail地址即可。

Password:

然后服务器将允许你的访问,并提示另外的欢迎信息。你可以使用一系列固定的命令来访问站点。

230-This is ftp.microsoft.com.  See the index.txt file
 in the root directory for more information
230 Anonymous user logged in as anonymous.

专 题:列出、改变目录
主 讲:qianqian 

列出目录
你可以使用DIR命令来列出目录。实际上,DIR并不是FTP规定的命令,但是标准的用户界面从操作系统借用了这个命令。

图2 显示了DIR命令的结果。最右边是文件或目录的名称,然后是文件日期和时间。然后是10位的文件属性。你可以通过"d"属性分别目录或文件。如果是"d",表示这是个目录。

改变目录
你可以通过CD命令改变目录。和DOS命令的区别是它使用正斜杠。例如改变目录到 /developr/vb directory:

ftp> cd developr/vb
250 CWD command successful.

再次使用DIR命令,你可以获得文件列表。图3 显示了 DIR命令在ftp.microsoft.com的 /developr/vb 目录的执行结果。


--------------------------------------------------------------------------------

图 2 DIR命令

ftp>dir
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
d-----     1 owner group       0   Jul  3 13:52    bussys
d-----     1 owner group       0   Aug  9  3:00    deskapps
d-----     1 owner group       0   Oct 27  7:35    developr
-----      1 owner group    7905   Oct  5  8:53    dirmap.htm
-----      1 owner group    4510   Oct  5  8:52    dirmap.txt
-----      1 owner group     712   Aug 25  1994    disclaimer.txt
-----      1 owner group     860   Oct  5  1994    index.txt
d-----     1 owner group           Aug 31  12:17   KBHelp
-----      1 owner group 7393252   Nov 28  4:04    ls-lR.txt
-----      1 owner group  914179   Nov 28  4:05    ls-lR.Z
-----      1 owner group  766409   Nov 28  4:04    LS-LR.ZIP
d-----     1 owner group       0   Oct 20  9:27    MSCorp
-----      1 owner group   28160   Nov 28  1994    MSNBRO.DOC
-----      1 owner group   22641   Feb  8  1994    MSNBRO.TXT
d-----     1 owner group       0   Oct 11  3:00    peropsys
d-----     1 owner group       0   Aug 23  21:55   Products
d-----     1 owner group       0   Oct  5  8:46    Services
d-----     1 owner group       0   Nov 22  14:38   Softlib
-----      1 owner group    5095   Oct 20  1993 support-phones.txt
-----      1 owner group     802   Aug 25  1994    WhatHappened.txt
226 Transfer complete.
1407 bytes received in 0.99 seconds (1.42 Kbytes/sec)


--------------------------------------------------------------------------------

图 3 Microsoft的/developr/vb directory目录

ftp> dir
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
d-----        1 owner group               0 Oct 25  6:39 kb
d-----        1 owner group               0 Feb 24 11:35 public
-----         1 owner group            1571 Aug 24  1994 README.TXT
d-----        1 owner group               0 Aug 24  1994 unsup-ed
226 Transfer complete.
270 bytes received in 0.22 seconds (1.23 Kbytes/sec)
 
下载
用ftp下载文件简单而直接。在下载之前,请保证你是在二进制模式下。ftp有两种文件传输模式,ASCII模式和二进制模式。为了转换到二进制模式,可以使用BIN命令。

ftp> bin
200 Type set to I.

返回ASCII模式,请使用ASC命令。

GET命令用来获取文件。如果你想在默认目录使用原始文件名下载文件,你要输入GET <filename> <回车>. 见图4。

你可以只输入GET,系统会提示你要下载的文件名,然后提示你存储到的新文件名(及目录)。


--------------------------------------------------------------------------------

图 4 Get命令

ftp> get readme.txt
200 PORT command successful.
150 Opening BINARY mode data connection for readme.txt(1571 bytes).
226 Transfer complete.
1571 bytes received in 3.46 seconds (0.45 Kbytes/sec)


--------------------------------------------------------------------------------

上传
你可以使用SEND命令上传文件。当然服务器要允许你上传文件才行。如图5。


--------------------------------------------------------------------------------

图 5 SEND命令发送文件.

ftp> send
(local-file) myfile.zip
(remote-file) myfile.zip
200 PORT command successful.
150 Opening BINARY mode data connection for myfile.zip.
226 Transfer complete.
3018 bytes sent in 0.06 seconds (50.30 Kbytes/sec)
支持命令
你可以使用HELP命令获得你的ftp程序支持的命令列表,如图6。


--------------------------------------------------------------------------------

图 6 Help命令

ftp>help
Commands may be abbreviated.  Commands are:

!            delete         literal prompt     send
?            debug          ls      put        status
append       dir            mdelete pwd        trace
ascii        disconnect     mdir    quit       type
bell         get            mget    quote      user
binary       glob           mkdir   recv       verbose
bye          hash           mls     remotehelp
cd           help           mput    rename
close        lcd            open    rmdir
ftp>

结束会话
在FTP提示符输入BYE可以结束会话。

ftp> bye
<the server disconnects the client>


--------------------------------------------------------------------------------

其它说明
你给FTP程序输入的命令和FTP实际传输给FTP服务器的命令有一点不同。例如你输入DIR命令时,实际上FTP程序传给FTP服务器的是LIST命令。以下提到FTP时将指FTP协议,除非另外说明。

FTP中,端口21(控制连接)将用于传

#5


FTP命令
FTP使用一系列简单的命令例如LIST或RETR来完成不同的任务。每一个FTP命令用CR/LF(回车)结束。


服务器反馈
在发送FTP命令后,你将收到服务器的回应。回应信息由3位数字加空格加上一段文字信息组成。图7 列出了一些回应信息。完整的描述可以参考RFC 959文档。


--------------------------------------------------------------------------------

图 7 返回值.

110 重启动标记回应(Restart marker reply).
    它这样显示:
    MARK yyyy = mmmm
    yyyy是用户处理的数据流标记,而mmmm是服务器的相应标记(注意标记和“=”之间的空格).
120 服务在nnn分钟内就绪.
125 数据连接已经打开,;传输开始.
150 文件状态OK;将要打开数据连接.
200 命令OK.
202 命令未实现,在这个站点是多余的.
211 系统状态或系统帮助的回应.
212 目录状态.
213 文件状态.
214 帮助信息.
215 NAME系统类型.
220 服务对新用户就绪.
221 服务关闭控制连接.
    如果合适的话推出登录.
225 数据连接打开,没有数据在传输.
226 关闭数据连接.
    需要的文件操作完成。.
227 进入Passive模式(h1,h2,h3,h4,p1,p2).
230 用户登入,已处理.
250 文件操作动作OK,完成.
257 “PATHNAME”已经创建.
331 用户名OK,需要密码.
332 需要登录帐号.
350 需要进行的文件操作延迟,进一步的信息.
421 服务不可用,关闭控制连接.
    当服务必须关闭时,这个回复可能适用任何目录.
425 无法打开数据连接.
426 连接关闭;传输异常中止.
450 需要进行的文件操作没有被接受.
    文件不可用 (例如,文件忙).
451 操作中止;处理时发生本地错误.
452 操作未接受.
    系统存储空间不足.
500 语法错误,无法识别命令.
    可能包括命令太长等错误.
501 参数语法错误.
502 命令未实现.
503 命令顺序错误.
504 对于该参数命令未实现.
530 未登录.
532 存储文件需要帐号.
550 需要的操作未被接受.
    文件不可用 (例如,文件未找到).
551 需要的操作异常中止;页类型未知.
552 需要的操作异常中止.
    超过了存储分配空间 (对于当前目录或数据集).
553 需要的操作未被接受.
    文件名不被允许.


--------------------------------------------------------------------------------

返回值类别
每一位返回值数字具有特别的含义。第一位数字有5个取值: 1 表示一个肯定的,初步的回答(这个命令被接受,并且这是其它服务器肯定回答的第一部分);2 表示一个永久的肯定回答; 3 表示一个中间层次的肯定回答,在这种情况下,服务器正在等待进一步的信息; 4 表示命令未被接受,需要的操作没有出现,担这种情况可能是暂时的; 5 表示绝对的失败。

第二个数字表示回答的类别: 0 表示语法错误; 1 表示信息内容; 2 表示有关传输链路的信息; 3 指验证或帐号信息; 4 未使用; 5 表示有关文件系统状态的信息。

第三个数字再对错误具体分类。

图 8 显示了如何分析FTP回复值的简要回顾,如果要详细的讨论,请参考RFC 959。


--------------------------------------------------------------------------------

图 8 解释 FTP返回值.

1xx     肯定的初步的回答
2xx     肯定回答
3xx     肯定的中间回答
4xx     短暂的否定的完成回答
5xx     永久的否定的完成回答

x0x     语法错误
x1x     信息
x2x     连接
x3x     验证和帐号
x4x     未规定
x5x     文件系统

#6


谢谢viena
但是一定要下载下来才能读取文件的内容吗?有没有可能直接从服务器上读取?

#7


With Inet1
    .URL = "ftp://10.28.48.150/space/cmo01/agr_eco/agr_eco/AB/"
    .UserName = "agr_eco"
    .Password = "aems"
    .Execute , "DIR"  '返回该目录。
    .Execute , "CLOSE" '关闭连接。
     .Execute , "GET ABWA20050101.txt D:\gotme.txt"      
End With

我运行了以上程序怎么什么反映都没有呢?我对inet控件不太熟悉

#8


学习

#9


我就是在向各位学习啊,你要是知道就请告诉我吧,谢谢了。

#10


学习