具有撇号字符的ColdFusion服务器文件

时间:2017-09-26 22:21:12

标签: file server coldfusion

当我尝试使用撇号上传文件时,出现错误:

    Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

如果文件名是test's.pdf,我收到错误。但如果我将名称更改为test.pdf,则没有错误。

有谁知道为什么?

由于

2 个答案:

答案 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>

您可能想要考虑相反的方法。而不是声明无效字符并替换它们,声明有效字符并替换有效字符列表中没有的任何内容。

我建议将此功能设置为适用于所有相应页面的功能。你如何做到这一点取决于你的情况。