当我尝试使用撇号上传文件时,出现错误:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
如果文件名是test's.pdf,我收到错误。但如果我将名称更改为test.pdf,则没有错误。
有谁知道为什么?
由于
答案 0 :(得分:2)
我的猜测是撇号是Microsoft Word经常使用的那些多字符撇号之一。像这样的字符可能不是您的OS文件系统的有效字符。
您可能需要重新编码系统以在上传时使用临时文件,然后在上传成功后将其重命名为有效的文件名。
这是一些基本的故障排除信息。
将代码包装在try / catch块中,并将完整错误转储到页面输出中。下面使用try / catch / dump的示例。以下示例通过除以零来强制执行错误。
对于基于标签的cfml:
<cftry>
<cfset offendingCode = 1 / 0>
<cfcatch type="any">
<cfdump var="#cfcatch#" label="cfcatch">
</cfcatch>
</cftry>
对于cfscript cfml:
<cfscript>
try {
offendingCode = 1 / 0;
} catch (any e) {
writeDump(var=e, label="Exception");
}
</cfscript>
答案 1 :(得分:2)
我有类似的情况,我在为查询结果创建excel文件的页面动态创建文件名。我采用的方法是创建一个用一些东西替换所有坏字符的函数。这是该功能的一部分。
<cfargument name="replacementString" required="no" default=" ">
<cfscript>
var inValidFileNameCharacters = "[/\\*'?[\]:><""|]";
return reReplace (arguments.fileNameIn, inValidFileNameCharacters, arguments.replacementString, "all");
</cfscript>
您可能想要考虑相反的方法。而不是声明无效字符并替换它们,声明有效字符并替换有效字符列表中没有的任何内容。
我建议将此功能设置为适用于所有相应页面的功能。你如何做到这一点取决于你的情况。