By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
435,426 Members | 3,152 Online
Bytes IT Community
Submit an Article
Got Smarts?
Share your bits of IT knowledge by writing an article on Bytes.

How to upload a file in Coldfusion

acoder
Expert Mod 15k+
P: 16,027
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.  
Jan 23 '07 #1
Share this Article
Share on Google+
3 Comments


P: 14
what of uploading more than one file
Mar 13 '10 #2

acoder
Expert Mod 15k+
P: 16,027
Use more input fields in your HTML code, e.g. uploadfile1, uploadfile2 and so on. In your Coldfusion code, use multiple cffile tags. You could keep a count and use a loop to make things easier.
Mar 15 '10 #3

Ajo Koshy Josep
P: 5
Multiple file upload can be achieved by using the tag "cffileupload". But this tag is supported only in ColdFusion 9.

http://help.adobe.com/en_US/ColdFusi...8238-7fd0.html
May 7 '11 #4