The cfftp tag lets you perform tasks on remote servers using File Transfer Protocol (FTP). You can use cfftp to cache connections for batch file transfers when uploading or downloading files.
For server/browser operations, use the cffile, cfcontent, and cfdirectory tags.
Using cfftp involves two major types of operations: connecting, and transferring files. The FTP protocol also provides commands for listing directories and performing other operations. For a complete list of attributes that support FTP operations and additional details on using the cfftp tag, see the CFML Reference.
Open an FTP connection and retrieve a file listing
The following table describes the code and its function:
Code |
Description |
---|---|
<cfftp connection="Myftp" server="MyServer" username="MyUserName" password="MyPassword" action="Open" stoponerror="Yes"> |
Open an FTP connection to the MyServer server and log on as MyUserName. If an error occurs, stop processing and display an error. You can use this connection in other cfftp tags by specifying the Myftp connection. |
<cfftp connection=Myftp action="GetCurrentDir" stoponerror="Yes"> <cfoutput> The current directory is: #cfftp.returnvalue#<p> </cfoutput> |
Use the Myftp connection to get the name of the current directory; stop processing if an error occurs. Display the current directory. |
<cfftp connection=Myftp action="ListDir" directory="#cfftp.returnvalue#" name="dirlist" stoponerror="Yes"> |
Use the Myftp connection to get a directory listing. Use the value returned by the last cfftp call (the current directory of the connection) to specify the directory to list. Save the results in a variable named dirlist (a query object). Stop processing if there is an error. |
<cfftp action="close" connection="Myftp"> <p>Did the connection close successfully? <cfoutput>#cfftp.succeeded#</cfoutput></p > |
Close the connection, and do not stop processing if the operation fails (because you can still use the results). Instead, display the value of the cfftp.succeeded variable, which is Yes if the connection is closed, and No if the operation failed. |
<cftable query="dirlist" colheaders="yes" 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="#DateFormat(lastmodified)#"> <cfcol header="<B>IsDirectory</b>" TEXT="#isdirectory#"> </cftable> |
Display a table with the results of the ListDir FTP command. |
After you establish a connection with cfftp, you can reuse the connection to perform additional FTP operations until either you or the server closes the connection. When you access an already-active FTP connection, you do not need to re-specify the user name, password, or server. In this case, make sure that when you use frames, only one frame uses the connection object.
The FTP connection established by the cfftp tag is maintained only in the current page unless you explicitly assign the connection to a variable with Application or Session scope.
Assigning a cfftp connection to an application variable could cause problems, since multiple users could access the same connection object at the same time. Creating a session variable for a cfftp connection makes more sense, because the connection is available to only one client and does not last past the end of the session.
<cflock scope="Session" timeout=10> <cfftp action="Open" username="anonymous" password="me@home.com" server="ftp.eclipse.com" connection="Session.myconnection"> </cflock>
In this example, the connection cache remains available to other pages within the current session. You must enable session variables in your application for this approach to work, and you must lock code that uses session variables. For more information on locking, see Using Persistent Data and Locking.
The following table shows the available cfftp actions and the attributes they require when you use a named (that is, cached) connection. If you do not specify an existing connection name, you must specify the username, password, and server attributes.
.
Action |
Attributes |
Action |
Attributes |
---|---|---|---|
Open |
none |
Rename |
existing new |
Close |
none |
Remove |
server item |
ChangeDir |
directory |
GetCurrentDir |
none |
CreateDir |
directory |
GetCurrentURL |
none |
ListDir |
name directory |
ExistsDir |
directory |
RemoveDir |
directory |
ExistsFile |
remotefile |
GetFile |
localfile remotefile |
Exists |
item |
PutFile |
localfile remotefile |
|
|