John
John

Reputation: 13699

Coldfusion cfset and variable scope

I am trying to do this

<cfset noncooperativevariable = #serverfile#>

and I get a serverfile not defined error. When I try to use the correct variable scope

<cfset noncooperativevariable = #CFFILE.serverfile#>

which returns the error.

You have attempted to dereference a scalar variable of type class java.lang.String as a structure with members.

Edit:

<cffile action="upload" filefield="fileUpload" destination="#destination#" nameConflict="makeUnique" result="upload">
<cfset noncooperativevariable = #fileUpload.serverfile#>

Upvotes: 1

Views: 2415

Answers (1)

infamous amos
infamous amos

Reputation: 62

When using the cffile tag, the results are defaulted to the cffile struct in your Variables scope. Therefore, if you are uploading a file with the following code:

<cffile action="upload" filefield="fileUpload" destination="#destination#" nameConflict="makeUnique" />

The results are accessible via the cffile struct in your Variables scope. The filename would be referenced as follows:

<cfset cooperativeVariable = cffile.serverfile />

In the snippet posted, you are using the 'result' attribute which would place your cffile results in the struct named upload instead of cffile, so you would get the filename like so:

<cfset cooperativeVariable = upload.serverfile />

Upvotes: 3

Related Questions