首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CFFILE -使用组件上传文件

CFFILE -使用组件上传文件
EN

Stack Overflow用户
提问于 2011-10-22 00:13:44
回答 1查看 2.2K关注 0票数 3

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

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

代码语言:javascript
复制
<cfobject name="process_form" component="processor" />
<cfset result = process_form.upload( form ) />

当组件"processor“尝试上传时,我得到的表单字段中没有包含文件。

我的处理器看起来像这样:

代码语言:javascript
复制
    <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,我会得到错误:

代码语言:javascript
复制
The form field arguments.form_data.file_1 did not contain a file.

如果我把#号放在我得到的变量的两边:

代码语言:javascript
复制
The form field C:\JRun4\servers\cfusion\SERVER-INF\temp\cfusion-war-tmp\neotmp7350969777287007477.tmp did not contain a file. 

有关于如何解决这个问题的想法吗?我更愿意把我所有的处理操作都放在一个组件中,但是现在我似乎不能让它工作。

谢谢!将要

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-22 00:39:24

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

代码语言:javascript
复制
<cffile action="upload" filefield="file_1" ...>

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7852252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档