【问题标题】:CFFILE Upload all Issues - Coldfusion 9CFFILE 上传所有问题 - Coldfusion 9
【发布时间】:2014-12-03 23:53:20
【问题描述】:

我正在尝试使用此代码将文件上传到我的服务器,但出现错误。

这是代码:

 <cfif isdefined("form.submit")> 
   <cffile action="uploadall" destination="#expandpath('../../images/Uploads/after')#"> 
 </cfif> 
 <cfform action="#cgi.script_name#" enctype="multipart/form-data"> 
   <cfinput type="file" name="attachment1"><br> 
   <cfinput type="file" name="attachment2"><br> 
   <cfinput type="file" name="attachment3"><br> 
   <cfinput type="submit" name=" submit" value="submit"> 
 </cfform>

这是错误:

以下信息仅供网站开发人员用于调试目的。

处理请求时发生错误

无效的内容类型:application/x-www-form-urlencoded。

文件上传动作要求表单使用 enctype="multipart/form-data"。

错误发生在 E:\sites\Example.Com\testing\handlers\upload\after.cfm: line 20

【问题讨论】:

  • 您运行的是 CF9 还是 9.0.1? CF9 原始版本中的文件上传控件存在许多问题,这些问题已在 9.0.1 更新程序中得到修复。

标签: coldfusion coldfusion-9


【解决方案1】:

我看到您已转向不同的解决方案,但我想回答您的问题,因为答案很疯狂(并且是 Coldfusion 中一些奇怪的陷阱的刻板印象)。问题是&lt;cfform&gt; simply doesn't support the enctype attribute。如果你想上传文件,你必须使用一个普通的&lt;form&gt;。很奇怪吧?

(我想您可以更改 XSLT,以便带有文件输入的 cfform 会自动正确设置 enctype。但是为什么它不开箱即用地执行此操作超出了我的理解。)

【讨论】:

  • 我要测试一下!是我会想到的最后一件事,因为我会假设如果 cfform 不支持 enctype,那么普通格式也不支持。谢谢!
  • 其实是支持的。额外的 html 属性直接传递到 &lt;form&gt; 标记中。
【解决方案2】:

您在目标属性中引用的目录结构是否存在'"#expandpath('../../images/Uploads/after')#"'?

如果目标属性不是绝对路径,那么它是相对于 ColdFusion 的临时目录的。与您的 Web 根目录或正在运行的模板无关。

这是来自文档here的描述

上传文件所在目录的路径名。如果不是绝对路径(以驱动器号和冒号开头,或者正斜杠或反斜杠开头),则它是相对于由 GetTempDirectory 函数返回的 ColdFusion 临时目录的。

【讨论】:

  • 路径正确。这是我发布问题之前要检查的第一件事
  • 另一个问题可能是 ColdFusion 没有该目录的权限。您是否尝试将目标更改为临时目录本身#expandpath('./uploads')# 以查看问题是否仍然存在?
  • 您是否在 ColdFusion 临时目录中创建了上传文件夹?我不确定它是否会为您做到这一点。
  • 我决定采用不同的方法来上传我的文件。感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-02
  • 2011-04-02
  • 2011-03-28
  • 1970-01-01
  • 1970-01-01
  • 2013-10-09
  • 1970-01-01
相关资源
最近更新 更多