2010-07-26 176 views
2

我想按如下方式进行文件大小验证。请看这个提案方法是否有意义。这部分本身应该工作。使用jQuery表单验证远程方法验证上传的文件大小

1> After the user selects a file, I check whether the file has suffix as png, gif etc. 
$("#myform").validate({ 
rules: { 
    fieldForUpload: { 
    required: true, 
    accept: "png|gif" 
    } 
} 
}); 

2>然后我想使用aJax方法上传文件到服务器进行验证,即使在用户单击提交按钮之前。 http://docs.jquery.com/Plugins/Validation/Methods/remote#url

$("#myform").validate({ 
    rules: { 
    fieldForUpload: { 
     required: true, 
     accept: "png|gif" 
     remote: "check-filesize.php" 
    } 
    } 
}); 

这里是我的问题:

1>这个方法有效吗? 换句话说,我可以使用“accept”+“remote”一起验证fieldUpload吗?

2>我可以强制先验证“接受”,然后验证“远程”吗?

3>如何实现这个“远程”方法? 仅供参考:我知道如何通过使用远程来验证数据库中是否存在电子邮件。 为了达到这个目的,我必须获得一些不同的知识吗?

非常感谢

回答

1

您是否考虑过使用文件上传部件?正常的表单验证需要访问表单域。大多数浏览器无法实际操纵文件上传输入字段。

退房PluploadSWFUpload,两个基于Flash的文件上传控件允许类型和文件大小的限制没有第一次将文件发送到服务器。

还有Ajax UploadUploadify,这两个jQuery插件试图使用现代浏览器功能来做同样的事情。旧版浏览器可能没有相同的支持级别。

+0

你好查尔斯, 如果我使用Ajax上传,怎么办呢在jQuery验证插件中将它与远程连接起来? 谢谢 – a2011 2010-07-26 19:35:22

+0

你不需要。该插件提供了自己的验证规则。 (另外,正常的文件输入在JavaScript中很难使用,所以验证插件很可能无法正常工作......) – Charles 2010-07-26 20:51:50

+0

Hello Charles, 对于表单验证,我使用jQuery Form Validation Plugin。然后,为了上传文件,我只使用一个PHP脚本。现在,对于Ajax上传,我如何使用它符合我的要求。 谢谢 – a2011 2010-07-27 01:51:37

5

如果你想使用jQuery的validate,你可以通过创建这个方法:

$.validator.addMethod('filesize', function(value, element, param) { 
    // param = size (en bytes) 
    // element = element to validate (<input>) 
    // value = value of the element (file name) 
    return this.optional(element) || (element.files[0].size <= param) 
}); 

你会使用它:

$('#formid').validate({ 
    rules: { inputimage: { required: true, accept: "png|jpe?g|gif", filesize: 1048576 } 
    messages: { inputimage: "File must be JPG, GIF or PNG, less than 1MB" } 
}); 
+0

这不适用于IE :( – aslamdoctor 2012-03-22 16:10:23