我有一个表单,我想提交给组件进行处理(CRUD 行为),问题是似乎将多部分/表单数据传递给组件会以某种方式丢失文件位置。当到达应该上传文件的组件部分时,我收到臭名昭著的表单字段不包含文件错误。
我不是 100% 确定为什么会发生这种情况,但如果我直接将表单提交到执行以下操作的 .cfm 页面cffile
一切都按预期工作,但如果 .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.
关于如何解决这个问题有什么想法吗?我宁愿将所有处理操作都放在一个组件内,但现在我似乎无法做到这一点。
谢谢!
将要
使用变量时不需要使用完整的变量名cffile
标签——您只需要表单字段名称,例如:
<cffile action="upload" filefield="file_1" ...>
应该足够了。这FORM
struct 字段保存临时文件的位置,但 cffile 标记不需要它(我认为 id 直接访问FORM
根据您提供的字段名在后端进行结构体)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)