File upload 停止coldfusion中的无效文件类型或文件名提交

File upload 停止coldfusion中的无效文件类型或文件名提交,file-upload,coldfusion,File Upload,Coldfusion,所以,我有一个可爱的问题,人们喜欢提交无效的文件类型或时髦的命名文件。。。(比如..嘿,我喜欢quotes.docx)有时候他们甚至会尝试上传一个.html链接 我应该如何检查像这样的东西?每次有人提交一个名称不正确的项目时,似乎都会产生一个错误 我应该创建一个在提交之前检查它的cfscript吗?或者有更简单的方法吗?如果是在提交之前,它将是javascript而不是cfscript。Javascript总是可以被使用的,所以我认为最好使用ColdFusion在服务器端进行。就我个人而言,我只

所以,我有一个可爱的问题,人们喜欢提交无效的文件类型或时髦的命名文件。。。(比如..
嘿,我喜欢quotes.docx)有时候他们甚至会尝试上传一个.html链接

我应该如何检查像这样的东西?每次有人提交一个名称不正确的项目时,似乎都会产生一个错误


我应该创建一个在提交之前检查它的cfscript吗?或者有更简单的方法吗?

如果是在提交之前,它将是javascript而不是cfscript。Javascript总是可以被使用的,所以我认为最好使用ColdFusion在服务器端进行。就我个人而言,我只是将整个过程包装在一个try/catch中(对于所有文件上传类型的事情,你都应该这样做),如果文件名不好,就向它们抛出一个错误。

在服务器上,作为验证的一部分,使用
reFindNoCase()
以及适当的正则表达式,以检查格式正确的文件路径。您可以在internet上找到许多文件路径的示例正则表达式,例如一个。希望有帮助

正如@Duncan指出的,客户端验证很可能是JavaScript。就个人而言,如果我有时间/资源,我会为最终用户提供方便。如果他们在系统需要DOCX时上传一个巨大的PDF文件,那么在上传完成之前不接收消息对他们来说是很烦人的

就文件名而言,在我看来,最简单的解决方案(也是我在过去使用过的)是假设所有文件名都是坏的,然后重命名它们。有几种方法可以做到这一点。如果需要保留原始文件名,我只需要使用urlEncodedFormat()将文件名清理为web友好的文件。如果需要保留所有版本,可以附加一个日期/时间戳,使bob.xocx成为bob_201104051129.docx或类似的东西。如果必须保留原始文件名而不进行任何更改,我建议将DB表设置为pinter系统,保留原始名称、时间戳和其他元数据,并通过将其重命名为ID来引用该文件


但是urlEncodedFormat()对于您概述的内容可能已经足够了。

对于用户体验,最好在客户端执行,但也可以在服务器端进行双重检查


对于客户端部分,我建议使用易于使用的。

当您说提交时,您是否使用cffile允许用户上载文件

如果是这样,请使用属性“accept”和try-and-catch-around。例如

<cftry> 
<cffile action = "upload"  
            fileField = "FileContents"  
            destination = "c:\files\upload\"  
            accept="image/jpg, application/msword"
            > 
 <cfcatch type="Any" >
    <p>sorry we could not upload your file!</p>
 </cfcatch>

</cftry>

很抱歉,我们无法上载您的文件

我个人不会使用“just”JavaScript,因为这可能会被禁用,而您又回到了同一条船上

希望这有帮助