5

我正在为表单提供动态数量的文件上传字段。所以在表单方面,我循环遍历这个动态数字(比如 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>

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

非常感谢!

这是错误的图像

块引用

4

1 回答 1

7

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

<!--- 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 ""检查非空字符串。
于 2012-06-22T13:59:50.533 回答