ColdFusion - 如何检查上传文件字段是否为空 - 尤其是动态字段名称?

时间:2012-06-22 13:56:49

标签: file-upload coldfusion dynamic-variables

我正在为表单提供动态数量的文件上传字段。所以在表单方面,我循环遍历这个动态数字(例如3,作为索引'm'),并命名每个文件字段输入'ResumeFile #m#'。在操作页面上,如果没有填写其中一个文件字段,我会收到错误。当填写所有3个文件字段时,它可以正常工作。

错误是(此处,未填写文件字段2时):

    The form field Form.ResumeFile2 did not contain a file. 

这是我创建表单的代码:

    <cfset numUploads = 3>
    <cfform name="uploadMultipleResumes" action="uploadMultipleResumes.cfm" enctype="multipart/form-data" >
        <cfinput name="EmployeeID" type="hidden" value="#form.EmployeeID#">
        Resume File(s): *<BR>
        <cfloop from="1" to="#numUploads#" index="j">
            <cfinput name="ResumeFile#j#" type="file" size="50">
        </cfloop>
        <BR />
        <cfinput name="Submit" type="submit" value="Upload Multiple Resumes">
    </cfform>

这是我在操作页面中的代码(缩写)。我已经尝试了很多关于如何检查每个文件字段是否未填写的组合,所有这些都允许空白输入通过并得到我上面提到的错误。

    <!--- Loop over multiple file fields --->
    <cfloop from="1" to="#numUploads#" index="m">
        <cfif 'Form.ResumeFile#m#' is not "">
            <cffile action="upload" filefield="#Evaluate('Form.ResumeFile#m#')#" nameconflict="makeunique" destination="#destinationPath#">
        </cfif>
    </cfloop>

即使我已经尝试过,我也会尝试所有的建议!我已经这几天了,我知道有答案!

非常感谢!

这是错误的图像

  

Blockquote

1 个答案:

答案 0 :(得分:6)

将操作页面上的代码更改为以下内容:

<!--- Loop over multiple file fields --->
<cfloop from="1" to="#numUploads#" index="m">
    <cfif len(Form["ResumeFile#m#"])>
        <cffile action="upload" filefield="Form.ResumeFile#m#" nameconflict="makeunique" destination="#destinationPath#">
    </cfif>
</cfloop>

修正了一些性能瓶颈:

  1. 请记住,如果可能,应尽量避免使用 evaluate()
  2. 使用len()代替IS NOT ""来检查非空字符串。