【问题标题】:Coldfusion cfset and variable scopeColdfusion cfset 和变量范围
【发布时间】:2011-08-05 14:26:21
【问题描述】:

我正在尝试这样做

<cfset noncooperativevariable = #serverfile#>

我得到一个未定义的服务器文件错误。当我尝试使用正确的变量范围时

<cfset noncooperativevariable = #CFFILE.serverfile#>

返回错误。

您试图取消引用 java.lang.String 类型的标量变量作为具有成员的结构。

编辑:

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

【问题讨论】:

  • 你是在 CFFILE 上传后直接这样做的吗?
  • 是的,我添加了更多代码以便更好地了解我在做什么。
  • 这是一个奇怪的错误,我认为可能是一个红鲱鱼。在您的cfset 中,您不想要“#upload.serverfile#”吗?您将“上传”作为您的result= 值。
  • 另外,当你在cffile之后使用&lt;cfdump var="#upload#"&gt;会发生什么?
  • 另外,请注意,在您的所有代码中,除了目标字段之外,您的井号 (##) 都不需要。

标签: variables coldfusion scope scalar


【解决方案1】:

使用cffile 标记时,结果默认为变量范围内的cffile 结构。因此,如果您上传的文件包含以下代码:

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

可以通过变量范围内的 cffile 结构访问结果。文件名引用如下:

<cfset cooperativeVariable = cffile.serverfile />

在发布的 sn-p 中,您正在使用 'result' 属性,该属性会将您的 cffile 结果放在名为 upload 而不是 cffile 的结构中,因此您可以像这样获取文件名:

<cfset cooperativeVariable = upload.serverfile />

【讨论】:

  • 我赞成您的回答,但这只是因为您指出了结果属性问题,默认范围是 cffile,而不是文件。
  • .. 和 file 已被弃用一段时间。
猜你喜欢
  • 1970-01-01
  • 2014-11-22
  • 1970-01-01
  • 2014-01-31
  • 2010-11-09
  • 2014-03-18
  • 2017-12-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多