cffile

Description

Manages interactions with server files.

The following sections describe the actions of the cffile tag:

Note: To execute, this tag must be enabled in the ColdFusion Administrator. For more information, see Configuring and Administering ColdFusion.

If your ColdFusion applications run on a server used by multiple customers, consider the security of the files that could be uploaded or manipulated by cffile. For more information, see Configuring and Administering ColdFusion.

Syntax

The tag syntax depends on the action attribute value. See the following sections.

See also

cfdirectory

History

ColdFusion 9: uploadAll action

ColdFusion 8: Support for reading and writing cfimages.

ColdFusion MX 7:

  • Added the result attribute, which allows you to specify an alternate variable in which to receive result parameters. Used for action="upload" action.

  • Added the fixnewline attribute for action = "append" and action = "write" actions.

ColdFusion MX 6.1:

  • Changed file path requirements: if you do not specify an absolute file path, the path is relative to the ColdFusion temporary directory, which is returned by the GetTempDirectory function.

  • Changed behavior for action="read": if the file starts with a byte order mark (BOM) ColdFusion uses it to determine the character encoding.

  • Changed behavior for action="upload"nameConflict="MakeUnique" ColdFusion now makes filenames unique by appending a incrementing number, 1 for the first file, 2 for the second and so on, to the name. In ColdFusion, filenames were made unique by appending an additional "1" for each file, as in 1, 11, 111, and so on.

ColdFusion MX:

  • Changed use of slashes in paths: you can use forward (/) or backward (\) slashes in paths on both UNIX and Windows systems.

  • Changed file hierarchy requirements: ColdFusion does not require that you put files and directories that you manipulate with this tag below the root of the web server document directory.

  • Changed directory path requirements for the destination attribute: a directory path that you specify in the destination attribute does not require a trailing slash.

  • Deprecated the system value of the attributes attribute.

  • Deprecated the temporary value of the attributes attribute. In ColdFusion, it is a synonym for normal. It might not work in later releases.

  • Changed the action attribute options read, write, append and move: they support a new attribute, charset.

  • The archive value of the attributes attribute is obsolete and has no effect.

Example

<!--- This shows how to write, read, update, and delete a file using CFFILE. 
This is a view-only example. ---> 
<!---  
<cfif IsDefined("form.formsubmit") is "Yes">  
    <!--- The form has been submitted, now do the action. --->  
    <cfif form.action is "new">  
        <!--- Make a new file. --->  
        <cffile action="Write"  
            file="#GetTempDirectory()#foobar.txt"  
            output="#form.the_text#">  
    </cfif>  
    <cfif form.action is "read">  
        <!--- Read existing file. --->  
        <cffile action="Read"  
            file="#GetTempDirectory()#foobar.txt"  
            variable="readText">  
    </cfif>  
 
    <cfif form.action is "add">  
        <!--- Update existing file. --->  
        <cffile action="Append"  
            file="#GetTempDirectory()#foobar.txt"  
            output="#form.the_text#">  
    </cfif>  
 
    <cfif form.action is "delete">  
        <!--- Delete existing fil. --->  
        <cffile action="Delete"  
            file="#GetTempDirectory()#foobar.txt">  
    </cfif>  
</cfif>  
<!--- Set some variables. --->  
<cfparam     name="fileExists"     default="no">  
<cfparam name="readText" default="">  
<!--- First, check whether canned file exists. --->  
<cfif FileExists("#GetTempDirectory()#foobar.txt") is "Yes">  
    <cfset fileExists="yes">  
</cfif>  
<!--- Now, make the form that runs the example. --->  
<form action="index.cfm" method="POST">  
<h4>Type in some text to include in your file:</h4> <p>  
<cfif fileExists is "yes">  
    <p>A file exists (foobar.txt, in <cfoutput>#GetTempDirectory()#</cfoutput>).  
    You may add to it, read from it, or delete it. </p> 
</cfif>  
<!--- If reading from a form, let that information display in textarea. --->  
<textarea name="the_text" cols="40" rows="5">  
    <cfif readText is not "">  
        <cfoutput>#readText#</cfoutput>  
    </cfif></textarea>  
<!--- Select from the actions depending on whether the file exists. --->  
<select name="action">  
<cfif fileExists is "no">  
    <option value="new">Make new file  
</cfif>  
<cfif fileExists is "yes">  
    <option value="add">Add to existing file  
    <option value="delete">Delete file  
    <option value="read">Read existing file  
</cfif>  
</select>  
<input type="Hidden" name="formsubmit" value="yes">  
<input type="Submit" name="" value="make my changes">  
</form> --->