File 带有撇号字符的ColdFusion服务器文件
当我尝试上载带有撇号的文件时,会出现以下错误:File 带有撇号字符的ColdFusion服务器文件,file,server,coldfusion,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,则没有错误 有人知道为什么吗 谢谢我猜撇号是Microsoft Word常用的多字符撇号之一。这样的字
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
如果文件名是test's.pdf,我会得到错误。但是,如果我将名称更改为test.pdf,则没有错误
有人知道为什么吗
谢谢我猜撇号是Microsoft Word常用的多字符撇号之一。这样的字符可能不是操作系统文件系统的有效字符 您可能需要重新编码系统,以便在上载时使用临时文件,然后在上载成功后将其重命名为有效的文件名 这里有一些基本的故障排除信息 将代码包装在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>
我猜撇号是MicrosoftWord经常使用的多字符撇号之一。这样的字符可能不是操作系统文件系统的有效字符 您可能需要重新编码系统,以便在上载时使用临时文件,然后在上载成功后将其重命名为有效的文件名 这里有一些基本的故障排除信息 将代码包装在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>
我有一个类似的情况,我动态地为根据查询结果创建excel文件的页面创建文件名。我采取的方法是创建一个函数,用一些东西替换所有的坏字符。这是该函数的一部分
<cfargument name="replacementString" required="no" default=" ">
<cfscript>
var inValidFileNameCharacters = "[/\\*'?[\]:><""|]";
return reReplace (arguments.fileNameIn, inValidFileNameCharacters, arguments.replacementString, "all");
</cfscript>
你可能想考虑一个相反的方法。与其声明无效字符并替换它们,不如声明有效字符并替换不在有效字符列表中的任何字符
我建议将此功能设置为可在所有适当页面上使用的功能。如何做取决于您的情况。我有一个类似的情况,我为根据查询结果创建excel文件的页面动态创建文件名。我采取的方法是创建一个函数,用一些东西替换所有的坏字符。这是该函数的一部分
<cfargument name="replacementString" required="no" default=" ">
<cfscript>
var inValidFileNameCharacters = "[/\\*'?[\]:><""|]";
return reReplace (arguments.fileNameIn, inValidFileNameCharacters, arguments.replacementString, "all");
</cfscript>
你可能想考虑一个相反的方法。与其声明无效字符并替换它们,不如声明有效字符并替换不在有效字符列表中的任何字符
我建议将此功能设置为可在所有适当页面上使用的功能。如何执行此操作取决于您的情况。您应该能够获得更好的错误消息。最好是指出错误发生的地方。我怎么做?取决于,是什么抛出错误消息的?iis?阿帕奇?冷饮?nginx?Coldfusion正在抛出错误,然后您可以添加一个错误处理程序来捕获错误并显示更多信息您应该能够获得更好的错误消息。最好是指出错误发生的地方。我怎么做?取决于,是什么抛出错误消息的?iis?阿帕奇?冷饮?nginx?Coldfusion正在抛出错误然后您可以添加一个错误处理程序来捕获错误并显示更多信息当我导入Excel或其他Microsoft ish文件时,这些文件在包含扩展ASCII字符和控制字符方面似乎没有什么问题,我总是发现将我想允许的角色列为白名单是最容易的。令人沮丧的是,发现一些不可打印的ASCII字符破坏了您的导入,您不知道为什么。由于大多数文件系统都有一组已定义的允许字符,因此修改名称比较容易。谢谢。。。但是在提交表单之前,如何替换文件名中的字符?您可能无法。您可以使用javascript更改表单字段的值,但如果这样做,浏览器可能无法找到该文件。您可能会被限制使用javascript查找不需要的字符并告诉用户更改文件名。当我导入Excel或其他Microsoft ish文件时,这些文件在包含扩展ASCII字符和控制字符方面似乎没有什么问题,我总是发现将我想允许的角色列为白名单是最容易的。令人沮丧的是,发现一些不可打印的ASCII字符破坏了您的导入,您不知道为什么。由于大多数文件系统都有一组已定义的允许字符,因此修改名称比较容易。谢谢。。。但是在提交表单之前,如何替换文件名中的字符?您可能无法。您可以使用javascript更改表单字段的值,但如果这样做,浏览器可能无法找到该文件。您可能仅限于使用javascript查找不需要的字符 并告诉用户更改文件名。