CFSCRIPT - 如何在上传之前检查文件名的长度

时间:2012-06-22 17:59:22

标签: file-upload coldfusion long-filenames

上传具有超长名称的文件时遇到此问题 - 我的数据库字段仅设置为50个字符。从那时起,我增加了数据库字段长度,但我想在上传之前检查文件名的长度。以下是我的代码。验证返回'85'作为字符长度。并且它为我上传的每个不同文件返回相同的计数(其中没有一个文件名长度为85)。

    <cfscript>
    missing_info = "<p>There was a slight problem with your submission. The following are required or invalid:</p><ul>";
    // Check the length of the file name for our database field
    if ( len(Form["ResumeFile1"]) gt 100 )
    {
    missing_info = missing_info & "<li>'Resume File 1' is invalid. Character length must be less than 100. Current count is " & len(Form["ResumeFile1"]) & ".</li>";
    validation_error = true;
    ResumeFileInvalidMarker  = true;
    }
    </cfscript>

有人认为这有什么问题吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

http://www.cfquickdocs.com/cf9/#cffile.upload

上传文件后,变量“clientFileName”将为您提供上传文件的名称,不带文件扩展名。

在上传文件名之前读取文件名的唯一方法是使用JavaScript来读取和解析文件字段中的值(文件路径)。

答案 1 :(得分:2)

快速澄清问题的措辞。当您的代码执行时,文件上传已经发生。该文件驻留在ColdFusion服务器上的临时目录中,与文件上载相关的表单字段包含该文件的临时文件名。除了检查是否已指定文件,不直接对该文件执行任何操作,或者您将绕过某些内置安全性。

您希望将cffile标记与upload actionor equivalent udf)一起使用,将临时文件移动到您选择的文件夹中。此时,您可以访问包含大量信息的结构。通常我会“上传”到应用程序的临时目录中,该目录应该在webroot之外以保证安全。

此时,您将要对文件进行任何验证,例如文件名长度,文件类型,文件大小等,如果未通过任何检查,则删除该文件。如果它通过了所有检查,那么你将它移动到它的最终目的地,这可能在webroot内。

在您的情况下,您需要检查cffile结构元素clientFile,它是原始文件名,包括扩展名(您需要检查,因为扩展名不需要存在,可以是任何长度)。