我有一个表单,我想提交给组件进行处理(CRUD 行为),问题是似乎将 multipart/form-data 传递给组件会以某种方式丢失文件位置。当它到达应该上传文件的组件部分时,我得到臭名昭著的表单字段不包含文件错误。
我不是 100% 确定为什么会发生这种情况,但是如果我将表单直接提交到执行cffile
操作的 .cfm 页面,一切都会按预期工作,但是如果 .cfm 页面执行以下操作:
<cfobject name="process_form" component="processor" />
<cfset result = process_form.upload( form ) />
并且组件“处理器”尝试进行上传,我得到表单字段不包含文件。
我的处理器看起来像:
<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.
关于如何解决这个问题的任何想法?我宁愿将所有处理操作都放在一个组件中,但现在我似乎无法完成这项工作。
谢谢!将要