我想在ExtJs4的文件字段中添加验证,这样用户只能浏览.png,.jpeg图像文件。我该怎么办?
{
xtype: 'filefield',
id:'photoUpload',
buttonOnly:true,
buttonText: 'Photo'
}
答案 0 :(得分:7)
我认为了解文件上传的工作原理非常重要,以免日后出现麻烦......
出于安全原因,以下内容适用:
上传过程本身就是在以下步骤中进行的:
OK
后,浏览器会将文件发送到服务器。temp
目录中(按服务器配置)。最后一步是您可以完全访问文件详细信息的唯一位置,包括实际的实际名称,大小和内容。
浏览器提供javascript的任何内容都是浏览器依赖。即使文件名在浏览器之间也会有所不同,尽管我所知道的所有浏览器都保留了实际的文件名(但不是实际的实际路径),您不能依赖它来使用未来的版本。原因是客户端显示文件名 。
所以建议如下:
在服务器端执行所有文件上载检查。
同样,您可以在JS客户端获取文件名,特别是如果您知道并且可以测试客户端将使用哪些浏览器,但我强烈建议您在服务器上进行此测试。
您必须记住的最后一件事是,用户可能会上传以.png
结尾的文件,但文件本身是.zip
且扩展名已更改 - 因此要确认该文件是{ {1}}你需要实际查看文件数据,只有服务器才能这样做。
答案 1 :(得分:6)
{
xtype: 'filefield',
id:'photoUpload',
buttonOnly:true,
vtype:'fileUpload',
buttonText: 'Photo'
}
我使用的Vtype ..
Ext.apply(Ext.form.VTypes, {
fileUpload: function(val, field) {
var fileName = /^.*\.(gif|png|bmp|jpg|jpeg)$/i;
return fileName.test(val);
},
fileUploadText: 'Image must be in .gif,.png,.bmp,.jpg,.jpeg format'
});
答案 2 :(得分:1)
在“filefield”xtype config
中尝试以下代码段regex : (/.(gif|jpg|jpeg|png)$/i),
regexText : 'Only image files allowed for upload',
msgTarget : 'under'