4

我在使用 ColdFusion 10 时遇到了问题。代码一直在工作,我不确定哪里发生了什么变化——代码本身在这个领域的几个月里没有改变。

我有一个看起来像这样的cffile:

<cffile action="upload" filefield="fileLocation" 
    destination="#destination#" 
    nameConflict="Overwrite" 
    accept="application/vnd.ms-excel,text/csv" 
    result="upload">

我有一个要上传的 .csv 文件。我得到的错误是这样的(cfcatch.message,然后是 cfcatch.detail):

The MIME type or the Extension of the uploaded file text/plain was 
not accepted by the server. 

Only files of type application/vnd.ms-excel,text/csv can be uploaded. 
Verify that you are uploading a file of the appropriate type.

在 Firebug 中,此条目的 Net 条目的 Post 部分如下所示:

Content-Disposition: form-data; name="fileLocation"; filename="myfilename.csv"
Content-Type: application/vnd.ms-excel

如果我去掉 accept="" 属性,然后执行 #upload# 的 cfdump,我会得到:

CONTENTSUBTYPE  vnd.ms-excel
CONTENTTYPE     application 

或者,换句话说,CF 正在接收Firefox 发送的 application/vnd.ms-excel。但是。它派生的 mime 类型是 text/plain。

我检查了文件 - 它是 CSV 格式,与之前上传的格式相同。我已将文件重命名为 .txt,然后又重命名为 .csv,以防万一这是与扩展相关的问题。同样的错误。我已经确认我没有打开文件。

我的用户正在使用我们的生产服务器来尝试这个。我正在使用我们的开发服务器。因此,无论它是什么,它都不是特定于单个服务器的。

有谁明白为什么会出现文本/纯文本?如果它正在获取应用程序/八位字节流,我会模糊地理解它;text/plain 只是......令人困惑。

4

1 回答 1

0

解决方案:

将 strict="false" 的属性放入<cffile>标签中。

即使默认值被假定为假,也不要依赖默认值,而是将严格放在任何地方。

另请查看此内容以了解对 cffile 的其他 CF10 更改:https ://wikidocs.adobe.com/wiki/display/coldfusionen/cffile

于 2014-11-06T17:10:48.740 回答