目录
北极星书库
一旦用CFFTP建立了一个连接,你可以再次使用该连接,执行附加的FTP操作。要实现这一点,在第一次建立连接时要用CONECTION属性定义并命名一个FTP连接对象。此对象用于保存与连接有关的信息,任何附加的FTP操作只要使用相同的CONECTION名字,即可自动使用存储在连接对象中的信息。这项特性节省了连接和登录到FTP服务器的时间,从而提高了文件传输操作的效率。
当你使用一个FTP连接时,你不需要重新指定下列属性:
· USERNAME
· PASSWORD
· SERVER
在这种情况下,如果使用了框架(frame),则你应确保当多个请求同时到达时,只有一个框架将使用连接对象。
跨多个文件的连接缓存
CFFTP缓存只能维持在当前的网页中,除非你显式地将一个CFFTP连接分配给一个应用程序范围或session范围的变量。将一个CFFTP连接分配给一个Application变量对象有可能会出现问题,因为有可能会有多个用户同时访问同一个连接对象。为CFFTP连接创建一个Session变量是比较合适的。
将FTP连接名分配给一个session变量即可实现session范围内的连接缓存。如下例所示:
<CFFTP ACTION=connect
USERNAME="anonymous"
PASSWORD="[email protected]"
SERVER="ftp.eclipse.com"
CONNECTION="Session.myconnection">
在这个例子中,连接缓存在当前Session的所有程序文件中有效。当然,你首先应确保你的应用程序允许了Session变量。
注意:要修改一个缓存的连接,例如改变RETRYCOUNT或TIMEOUT的值,则必须重新建立该连接。
连接缓存的操作和属性
下表显示了使用连接缓存进行各种操作所需的CFFTP属性,如果没有使用连接缓存,则还需指定USERNAME, PASSWORD和SERVER属性。
CFFTP各操作所需的属性 |
|||
操作 |
属性 |
操作 |
属性 |
Open |
无 |
Rename |
EXISTING NEW |
Close |
无 |
Remove |
SERVER ITEM |
ChangeDir |
DIRECTORY |
GetCurrentDir |
无 |
CreateDir |
DIRECTORY |
GetCurrentURL |
无 |
ListDir |
NAME DIRECTORY |
ExistsDir |
DIRECTORY |
GetFile |
LOCALFILE REMOTEFILE |
ExistsFile |
REMOTEFILE |
PutFile |
LOCALFILE REMOTEFILE |
Exists |
ITEM |
例子:一个FTP Session
下面的例子打开一个FTP连接,获取文件列表,显示文件或目录的名字,路径,URL,长度,以及修改日期。例中使用了连接缓存,并允许了自动检测错误。
<--- open FTP connection --->
<CFFTP CONNECTION=FTP
USERNAME="betauser"
PASSWORD="monroe"
SERVER="beta.company.com"
ACTION="Open"
STOPONERROR="Yes">
<--- get current directory name --->
<CFFTP CONNECTION=FTP
ACTION="GetCurrentDir"
STOPONERROR="Yes">
<--- output directory name --->
<CFOUTPUT>
FTP directory listing of #cfftp.returnvalue#.<p>
</CFOUTPUT>
<--- get directory info --->
<CFFTP CONNECTION=FTP
ACTION="listdir"
DIRECTORY="/*."
NAME="q"
STOPONERROR="Yes">
<--- output dir-list results --->
<HR>
<P>FTP Directory Listing:</P>
<CFTABLE QUERY="q" HTMLTABLE>
<CFCOL HEADER="<B>Name</B>" TEXT="#name#">
<CFCOL HEADER="<B>Path</B>" TEXT="#path#">
<CFCOL HEADER="<B>URL</B>" TEXT="#url#">
<CFCOL HEADER="<B>Length</B>" TEXT="#length#">
<CFCOL HEADER="<B>LastModified</B>"
TEXT="Date(Format#lastmodified#)">
<CFCOL HEADER="<B>IsDirectory</B>"
TEXT="#isdirectory#">
</CFTABLE>
前页
目录
北极星书库