在jquery中限制图像大小和类型

时间:2012-02-23 12:25:18

标签: javascript jquery

我有一个type = file的输入。这用于上传图像。现在我想将图像大小限制为500 kb并仅键入.png。请帮忙

5 个答案:

答案 0 :(得分:0)

单凭javascript无法实现这一点,因为它无法访问本地文件系统,无法在上传之前检查文件大小。

解决方法是使用Flash,它具有本地文件访问权限,或检查服务器端的文件,但这并不理想,因为它仍然意味着可以在检查文件大小之前上载大文件有效性。

答案 1 :(得分:0)

我认为您不能使用javascript限制文件大小,对于文件扩展名,您可以执行以下操作:


var ext = $('#my_file_field').val().split('.').pop().toLowerCase();
if($.inArray(ext, ['png']) == -1) {
    alert('invalid extension!');
}

答案 2 :(得分:0)

我认为这必须在服务器端完成。我不相信你可以在jQuery中检测文件上传的大小。这是因为JavaScript无法访问本地文件系统。

答案 3 :(得分:0)

尝试:

<input type="hidden" name="MAX_FILE_SIZE" value="500000" />

指定的值是通过此表单上传的最大允许KB。值100000将允许文件高达100kb。

但是,这是HTML并且可以绕过,您仍然需要进行PHP / Server Side验证,如:

IF($_FILES['file']['size'] > 500000){// show error}

在php中,大小值以字节为单位

您可以检查$ _FILES ['file'] ['type'],将其限制为仅限png文件,例如:

IF($_FILES['file']['type'] != "image/jpeg"){// show error}

答案 4 :(得分:0)

试试这个:

var myFSO = new ActiveXObject("Scripting.FileSystemObject");
var filepath = document.upload.file.value;
var thefile = myFSO.getFile(filepath);
var size = thefile.size;

var ext = filePath.substring(filePath.lastIndexOf('.') + 1).toLowerCase(); 
if(ext=="png" && size=500000)
return true;
else
alert("invalid filetype or size greater than 500kb");