CFFILE - 使用组件上传文件

时间:2011-10-21 16:13:44

标签: coldfusion cffile

我有一个表单,我想提交给一个组件进行处理(CRUD行为),问题是它似乎将multipart / form-data传递给某个组件以某种方式丢失了文件位置。当它到达应该上传文件的组件部分时,我得到臭名昭着的表单字段不包含文件错误。

我不是百分之百确定为什么会发生这种情况,但是如果我将表单直接提交到执行cffile操作的.cfm页面,一切都按预期工作,但如果.cfm页面执行如下操作:

<cfobject name="process_form" component="processor" />
<cfset result = process_form.upload( form ) />

并且组件“processor”尝试进行上传,我得到表单字段不包含文件。

我的处理器如下:

    <cfcomponent name="processor">
      <cffunction name="upload" returntype="string">
      <cfargument name="form_data" type="struct" />
      <cffile action="upload" filefield="#arguments.form_data.file_1#" ...>
          [ ... ]
      </cffunction>
    </cfcomponent>

有一点需要注意的是,如果我尝试使用变量arguments.form_data.file_1而没有围绕它的#符号,我会收到错误:

The form field arguments.form_data.file_1 did not contain a file.

如果我在变量周围加上#符号:

The form field C:\JRun4\servers\cfusion\SERVER-INF\temp\cfusion-war-tmp\neotmp7350969777287007477.tmp did not contain a file. 

有关如何解决此问题的任何想法?我宁愿将所有处理操作放在一个组件中,但是现在我似乎无法做到这一点。

谢谢! 将

1 个答案:

答案 0 :(得分:6)

使用cffile标记时,您不需要使用完整的变量名称 - 您只需要表单字段名称,如下所示:

<cffile action="upload" filefield="file_1" ...>

应该足够了。 FORM struct字段保存临时文件的位置,但cffile标记不需要(我的图像,id根据你的字段名直接访问后端的FORM结构)提供)。

相关问题