[Webinar] Streamline your web hosting managementRegister Today

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 340
  • Last Modified:

Cffile example please?

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
jasch2244
Asked:
jasch2244
  • 5
  • 2
  • 2
1 Solution
 
_agx_Commented:

<!---
	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
 
_agx_Commented:
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
 
azadisaryevCommented:
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
The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

 
_agx_Commented:
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
 
azadisaryevCommented:
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
 
_agx_Commented:
> plus a FF search plug-in!

Sweet! I did not know they had a plugin.
0
 
jasch2244Author Commented:
_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
 
jasch2244Author Commented:
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
 
_agx_Commented:
> 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

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

  • 5
  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now