Improve company productivity with a Business Account.Sign Up

x
?
Solved

Cffile example please?

Posted on 2009-05-11
9
Medium Priority
?
343 Views
Last Modified: 2013-12-24
My question is two part so I can get a better understanding of using cffile and how to impliment into my project. I'm trying to create a transaction center for a real estate application where the user can upload files to share with others (mortgage people, title / closing companies other agents etc.). I'm having a problem understanding how this will work using cffile (upload).
Question one: If the folder does not exsist on the server is there a way to create one via a form and coldfusion?
Question two: Do you have an example of how to use cffile to upload multiple documents at one time and store the name into the database?
0
Comment
Question by:jasch2244
  • 5
  • 2
  • 2
9 Comments
 
LVL 53

Accepted Solution

by:
_agx_ earned 2000 total points
ID: 24360768

<!---
	If the form was submitted, process the files
--->
<cfif structKeyExists(form, "uploadButton")>
	<cfparam name="form.numberOfFiles" default="0">
	<!--- replace this with your folder path --->
	<cfset folderToStoreFiles = ExpandPath("myFiles")>
	<!--- create the directory if it does not exist --->
	<cfif not DirectoryExists(folderToStoreFiles)>
		<cfdirectory action="create" directory="#folderToStoreFiles#">
	</cfif>
	
	<!--- process each file ...--->
	<cfloop from="1" to="#form.numberOfFiles#" index="x">
		<!--- if a file was supplied, upload it ... --->
		<cfif structKeyExists(form, "uploadFile"& x) AND len(trim(form["uploadFile"& x]))>
			<!--- upload the current file to the desired directory --->
	 		<cffile action="upload"
				filefield="uploadFile#x#" 
    			destination="#folderToStoreFiles#" 
    			nameconflict="makeunique">
	
    		<!--- insert the file name into your database --->
			<cfquery name="insertFile" datasource="YourDatasourceName">
				INSERT INTO YourTableName ( FileNameColumn )
				VALUES 
				(
					<cfqueryparam value="#cffile.serverFileName#" cfsqltype="cf_sql_varchar">
				)
			</cfquery>
 
    		<!--- debugging: show uploaded file info --->
			<cfoutput>
				Processing file #x#: File uploaded to #cffile.serverDirectory#/#cffile.serverFileName#<br>
			</cfoutput>
		<cfelse>		
	    	<!--- debugging: show error --->
			<cfoutput>
				Processing file #x#: No file found. Skipping ...<br>
			</cfoutput>
		</cfif>
	</cfloop>
</cfif>	
 
<!---
	Create a form with however many fields you need
--->
 
<cfoutput>
<cfset numberOfFiles = 5>
<form method="post" enctype="multipart/form-data">
	<cfloop from="1" to="#numberOfFiles#" index="x">
		File #x# <input type="file" name="uploadFile#x#"><br>
	</cfloop>
	<input type="hidden" name="numberOfFiles" value="#numberOfFiles#">
	<input type="submit" name="uploadButton">
</form>
</cfoutput>				

Open in new window

0
 
LVL 53

Expert Comment

by:_agx_
ID: 24360789
Question one: If the folder does not exsist on the server is there a way to create one via a form and coldfusion?

Yes. You can use the cfdirectory tag to create folders on your server.
Question two: Do you have an example of how to use cffile to upload multiple documents at one time and store the name into the database?

See my example above.  It creates a form with 5 file fields with the names uploadFile1, uploadFile2, ...., uploadFile5.  (But you can create as few or as many as you want).  When the form is submitted, it uses a a loop to process each of the files:

- First it uses cffile to upload each file
- Uses cfquery to insert the file _name_ (ie someFile.jpg) into a database table.  Just replace the datasource, table and column names with your own.
0
 
LVL 27

Expert Comment

by:azadisaryev
ID: 24360858
adobe cf livedocs has all the examples you may need:
<cffile>: http://livedocs.adobe.com/coldfusion/8/Tags_f_02.html
<cffile action="upload">: http://livedocs.adobe.com/coldfusion/8/Tags_f_10.html

PS: you can download CFML Reference Manual and CF Dev Guide free PDFs from adobe.com if you do not have them: http://www.adobe.com/support/documentation/en/coldfusion/

as for your questions:

>> is there a way to create [a folder] via a form and coldfusion?

yes, there is. check out <cfdirectory action="create"> tag:

<cfdirectory>: http://livedocs.adobe.com/coldfusion/8/Tags_d-e_03.html
using <cfdirectory>: http://livedocs.adobe.com/coldfusion/8/manageFiles_7.html

>> example of how to use cffile to upload multiple documents at one time and store the name into the database?

read these:
http://www.bennadel.com/blog/1117-Ask-Ben-Uploading-Multiple-Files-Using-ColdFusion.htm
http://www.devarticles.com/c/a/ColdFusion/Multiple-File-Upload-with-CFFILE/
http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/Cold_Fusion_Markup_Language/Q_23730630.html

Azadi
0
Get 10% Off Your First Squarespace Website

Ready to showcase your work, publish content or promote your business online? With Squarespace’s award-winning templates and 24/7 customer service, getting started is simple. Head to Squarespace.com and use offer code ‘EXPERTS’ to get 10% off your first purchase.

 
LVL 53

Expert Comment

by:_agx_
ID: 24360897
Yes, definitely get yourself a copy of livedocs or bookmark it in your browser.  Most likely you will use it on a daily basis.
0
 
LVL 27

Expert Comment

by:azadisaryev
ID: 24361126
SOT:

http://www.cfquickdocs.com/cf8/

same content (sans comments) as livedocs, and about 1000 times faster...
plus a FF search plug-in!
great for quick look-ups of tag/function syntax (though i personally tend to just have the CFML reference PDF open...)

Azadi
0
 
LVL 53

Expert Comment

by:_agx_
ID: 24361292
> plus a FF search plug-in!

Sweet! I did not know they had a plugin.
0
 
LVL 1

Author Comment

by:jasch2244
ID: 24369193
_agx_: I'm able to get your code to work (thank you exactly what I'm looking for). But I can't get the file name to be stored in the database with a file extension (example: myfile.pdf is stored as myfile) is there  a work around for this? I'm using mySQL
0
 
LVL 1

Author Comment

by:jasch2244
ID: 24369330
I think I found it.. in the portion of the code: <cfqueryparam value="#cffile.serverFileName#" cfsqltype="cf_sql_varchar"> I changed the .serverFileName to .serverFile and it worked! Is there a disadvantage to doing this?
0
 
LVL 53

Expert Comment

by:_agx_
ID: 24371041
> Is there a disadvantage to doing this?

jasch2244, sorry that was a typo. No there is no disadvantage. It is strictly a matter of using whichever field you need for your purposes.  In your case, yes, you want  the one with the file extension.
0

Featured Post

Get 10% Off Your First Squarespace Website

Ready to showcase your work, publish content or promote your business online? With Squarespace’s award-winning templates and 24/7 customer service, getting started is simple. Head to Squarespace.com and use offer code ‘EXPERTS’ to get 10% off your first purchase.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

The following information will get you familiar with your new DV server, including the (mt) Account Center, the Plesk Control Panel, our world-renowned support department and the rest of the (mt) tools that come with your new service.
The Super Bowl is just days away. Millions of advertising dollars will be spent in just a few hours to drive people to websites around the globe. Optimizing your site in anticipation of a big event like this (and the traffic surges that follow) will…
Watch the video of Kernel Migrator for SharePoint, which demonstrate the process easily of migration from SharePoint to SharePoint, OneDrive for Business & Google Drive servers, Public Folder to SharePoint, File Server to SharePoint. The tool has va…
To export Lotus Notes to Outlook PST or Exchange and Domino Server files to Exchange Server or PST files with ease, go for Kernel for Lotus Notes to Outlook conversion tool. Through the video, you can watch the conversion process. A common user with…

607 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question