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

Kir*_*ten 4 coldfusion file-upload dynamic-variables

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

错误是(这里,当没有填写文件字段2时):

    The form field Form.ResumeFile2 did not contain a file. 
Run Code Online (Sandbox Code Playgroud)

这是我创建表单的代码:

    <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>
Run Code Online (Sandbox Code Playgroud)

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

    <!--- 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>
Run Code Online (Sandbox Code Playgroud)

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

非常感谢!

这是错误的图像

大段引用

Sey*_*sen 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>
Run Code Online (Sandbox Code Playgroud)

修正了一些性能瓶颈:

  1. 请记住,如果可能的话,应该总是避免使用 evaluate().
  2. 使用len()而不是IS NOT ""检查非空字符串.