使用ValidateThis进行文件字段验证

时间:2014-01-17 07:32:30

标签: forms validation coldfusion

我的一个coldfusion项目使用'FW / 1'框架和'ValidateThis'作为验证框架。

通过使用此功能,所有输入字段都可以正确验证,没有任何问题。但是当涉及到文件字段时,它会在客户端正确验证,但表单不会被提交。不知道为什么会这样。详情如下:

  

文件字段操作:必须仅以“jpeg / jpg”格式上传图像。

Test / Default.cfm(查看页面)

<form action="#buildUrl('test.default')#" method="post" 
    enctype="multipart/form-data"  name="frm_test" id="frm_test">

 <div class="field">
     <label for="picture">Profile Picture:</label>
     <input type="file" id="picture" name="picture" value="">
 </div>

<input type="submit" class="ui small button green" name="Submit" value="#rc.Submit#">
</form>

validatethis / rules / test.json(规则文件)

{"validateThis" : {
    "contexts" : [
        {"name":"test","formName":"frm_test"}
    ],
 "objectProperties" : [
{"name":"picture",
            "rules":[
                {"type":"custom","failureMessage":"Please upload jpg/jpeg images only",
                    "params":[
                        {"name":"remoteURL","value":"/ValidateThis/rules/checkformat.cfm"}
                    ]
                }
            ]
        }
    ]
}
co}

validatethis /规则/ checkformat.cfm

<cfif len(url.picture)>
<cfset fileEXt = listlast(url.picture,'.')>
<cfif fileEXt EQ 'jpg' OR fileEXt EQ 'jpeg'>
    true
<cfelse>
    false
</cfif>

所以上面提到的细节是为客户端验证配置的,一切都很完美。但是在文件上传期间,表单会验证但不会提交。

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

看起来您正在使用method="post",但检查GET url参数:

<cfif len(url.picture)>

尝试:

<cfif len(form.picture)>
    <cfset fileEXt = listlast(form.picture,'.')>
    <cfif fileEXt EQ 'jpg' OR fileEXt EQ 'jpeg'>
        true
    <cfelse>
        false
     </cfif>
</cfif>

顺便说一句,这是检查文件上传Getting The MetaData For A File Upload In ColdFusion

的更有力的方法