Help | Site Map
Connecting Tech Pros Worldwide
Reply
 
LinkBack Thread Tools
  #1  
Old January 23rd, 2007, 11:45 AM
acoder's Avatar
Site Moderator
 
Join Date: Nov 2006
Location: UK
Posts: 12,766
Default How to upload a file in Coldfusion

How to Upload a File in Coldfusion

Use the cffile tag for uploading files to the server.

Note that allowing people to upload files is fraught with danger and only trusted users should be allowed to upload files. Checks should be made to make sure that only allowed file types are uploaded.

The Client-Side

First of all, let us deal with the client side. This assumes some knowledge of HTML.

You need to include an input file field in your form, use the POST method and set the MIME encoding to "multipart/form-data" from the default value of "application/x-www-form-urlencoded".

[HTML]<form name="uploadform" action="actionpage.cfm" method="POST" enctype="multipart/form-data">
<input type="file" name="uploadfile">
<input type="submit" name="uploadsubmit" value="Upload">
</form>[/HTML]

These are the three basic client-side components for a file upload.

The Server-Side

Now onto the server side. This assumes some basic knowledge of Coldfusion.

You will need to use the cffile tag (the syntax is shown below):

Expand|Select|Wrap|Line Numbers
  1. <cffile 
  2.    action = "upload"
  3.    fileField = "formfield"
  4.    destination = "full_path_name"
  5.    nameConflict = "behaviour"
  6.    accept = "mime_type" or "file_type"
  7.    mode = "permission"
  8.    attributes = "file_attribute_or_list"
  9.    result = "result_name">
Only the first three attributes are required, the rest are optional. The last attribute was added in Coldfusion MX 7. The following code demonstrates an example of this tag's use:

Expand|Select|Wrap|Line Numbers
  1. <cffile 
  2.    action = "upload"
  3.    fileField = "uploadfile"
  4.    destination = "c:\Inetpub\wwwroot\uploads"
  5.    nameConflict = "overwrite">
The cffile tag can be used for interacting with server files, but we are interested in uploading, so we set the action attribute to upload. The fileField attribute must correspond with the file input field defined in our form. The destination should be an absolute path to a directory on the server. If you do not specify an absolute path, the destination path will be relative to the Coldfusion temp directory which you can obtain with GetTempDirectory().

The nameConflict attribute is optional, but should be specified in case a file already exists with the same name. In that case, you have four options:
Error: An error message is displayed with the page processing aborted.
Skip: The file is not uploaded, but no error message .
Overwrite: Files on the server with the same name are overwritten.
Makeunique: The file is uploaded and given a unique name.

You can use the accept attribute to restrict the types of files that the user is allowed to upload, e.g. to allow only GIFs, JPGs and PNGs, you could use:
Expand|Select|Wrap|Line Numbers
  1. accept="image/gif,image/jpg,image/png"
Some Optional Attributes

You can skip this part if you don't need to set the file properties.

The final three attributes are mode, attributes and result.

mode lets you set the read/write/execute file permissions on Unix/Linux.

attributes allows you to set whether the file should be readOnly (read only), hidden or normal (on Windows). each attribute must be explicitly set, otherwise they will be overridden.

result lets you use a prefix other than cffile for the variable which contains the result parameters, e.g. if you set this result parameter to cfresult, for the size of the uploaded file, instead of
Expand|Select|Wrap|Line Numbers
  1. cffile.fileSize
you would use
Expand|Select|Wrap|Line Numbers
  1. cfresult.fileSize
Example

Ok, now for an example. Our example sends the form to the same page which we shall call UploadFile.cfm.

Expand|Select|Wrap|Line Numbers
  1.  <cfif isDefined("form.uploadfile")>
  2.  <cffile 
  3.     action = "upload"
  4.     fileField = "uploadfile"
  5.     destination = "c:\Inetpub\wwwroot\uploads"
  6.     nameConflict = "overwrite">
  7.  <cfelse>
  8.   <form name="uploadform" action="UploadFile.cfm" method="POST" enctype="multipart/form-data">
  9.    <input type="file" name="uploadfile">
  10.    <input type="submit" name="uploadsubmit" value="Upload">
  11.   </form>
  12.  </cfif>
  13.  
Reply
Reply

Bookmarks

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

What is Bytes?

We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights. Get the best answers to your questions from over network members.
Post your question now . . .
It's fast and it's free

Popular Articles