1

我在 Linux 上的 ColdFusion 中发布了一个表格。表单有一个文件字段。CF 要求表单标签上的 enctype="multipart/form-data" 属性。如果我有这个,我得到一个“JRun Servlet 错误 - 500 没有这样的文件或目录”

如果我取出属性,表单会发布,我会收到 CF“enctype=multipart/form-data”错误。

该怎么办?

这是表格的精简版:

 <form action="post.cfm" name="form2" id="port_form" method="post" enctype="multipart/form-data">
      <input type="text" id="name" name="name" value="#port_name#"><br>
      <input type="file" id="before" name="before"><br>
      <input type="hidden" name="port_id" value="#port_id#" />
      <button type="submit" name="post"> Post Portfolio Item </button>  
 </form>

这是我要发布到的页面 (post.cfm)

 <cfif form.before neq "">
    <cfinvoke component = "#application.cfcPath#.file" method = "upload" returnVariable = "beforeFile" theField="before">
 <cfelse>
    <cfset beforeFile = ''>
 </cfif>

 <cfif form.after neq "">
    <cfinvoke component = "#application.cfcPath#.file" method = "upload" returnVariable = "afterFile" theField="after">
 <cfelse>
    <cfset afterFile = ''>
 </cfif>    

 <cfinvoke component = "#application.cfcPath#.portfolio" method = "post" beforeFile="#beforeFile#" afterFile="#afterFile#">

 <cfif form.port_id eq 0>
    <cfset message = "The Portfolio Item has been successfully inserted.">
 <cfelse>
    <cfset message = "The Portfolio Item has been successfully updated.">
 </cfif>

 <cf_forward fuseaction="#fusebox.circuit#.home" message="#message#">
4

3 回答 3

1

可能的原因是服务器找不到上传的临时文件。

您是否尝试过在没有组件包装的情况下进行上传?

简单地

<cfif StructKeyExists(Form, "before") AND Form.before NEQ "">
<cffile
    action="upload"
    filefield="before"
    destination="#AbsPathToStoreFile#"
    >
</cfif>

<cfdump var="#cffile#">

如果失败,也许您将能够看到更多详细信息。

于 2009-02-13T15:35:16.290 回答
0

您可能已经尝试过,但是您是否尝试过路径和文件名中的全部大写或全部小写?有时 CF 会破坏大写/小写的东西。

于 2009-02-13T02:34:54.073 回答
0

我想知道 CF 试图将文件保存到的临时文件夹是否不可访问(权限)或配置不正确。

您应该尝试使用 CFFILE 标记并指定您有权访问的文件夹。

于 2009-02-13T15:46:32.160 回答