【问题标题】:CFSCRIPT - How to check the length of a filename before uploadingCFSCRIPT - 如何在上传前检查文件名的长度
【发布时间】:2012-06-22 17:59:22
【问题描述】:

我在上传具有超长名称的文件时遇到了这个问题 - 我的数据库字段仅设置为 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>

有人觉得这有什么问题吗?

谢谢!

【问题讨论】:

    标签: file-upload coldfusion long-filenames


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      您想使用cffile 标记和upload action (or equivalent udf) 将临时文件移动到您选择的文件夹中。此时,您可以访问包含大量信息的结构。通常我会“上传”到应用程序的临时目录中,为了安全起见,该目录应该位于 webroot 之外。

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

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

      【讨论】:

      • 感谢您的详细回答 - 很棒的信息!是的,没错,从技术上讲,它已经上传到服务器了——我忘了​​那部分了。
      猜你喜欢
      • 2023-04-01
      • 1970-01-01
      • 2020-02-04
      • 2013-01-28
      • 2021-07-13
      • 1970-01-01
      • 1970-01-01
      • 2014-12-13
      • 2014-02-07
      相关资源
      最近更新 更多