如何在提交前检查多个文件大小?

时间:2014-05-17 23:13:44

标签: jquery

当文件大小超过2 MB

时,我尝试阻止在提交之前上传文件

一个输入一切正常,但多个输入出错了

任何人都可以帮助我吗?

这是我的小提琴

fiddle

$('#zzz').submit(function() {
    var valid_form = true;

    var thumb1_size = $('#1')[0].files[0].size;
    if (thumb1_size > 2097152) {
        $('.error').html(thumb1_size);
        valid_form = false;
        alert(valid_form)
    }
})

如果我改变

    $('#zzz').submit(function() {
    var valid_form = true;

    var thumb1_size = $('#1')[0].files[0].size;
    var thumb2_size = $('#2')[0].files[0].size;
    if (thumb1_size > 2097152 || thumb2_size > 2097152 ) {
        $('.error').html(thumb1_size);
        valid_form = false;
        alert(valid_form)
    }
})

表单提交甚至valid_form返回false

2 个答案:

答案 0 :(得分:0)

怎么了?您需要计算和处理每个输入字段的大小。另外,你还是发送表格。您必须prevenDefault function阻止它。

使用此:

$('#zzz').submit(function (event) {  
    event.preventDefault(); 
    $("input").each(function() {
        if($(this).val() != '') {
            var name = this.files[0].name;
            var size = this.files[0].size;
            if(size > 2097152) {
                alert('error');
                $('.error').append("<p>Size of file \""+name+"\" is wrong: "+size+"</p>");
            }
        }
    });
});

Demo

答案 1 :(得分:0)

这将在某些文件未上传时显示错误,并且还会检查大小。

查看in action

$('#zzz').submit(function (event) {
     $('.error').html('');
     var valid_form = true;
     var files = $('input[type=file]');
     for ( i = 0; i < files.length; i++) {
         if(files[i].files[0] != null){
             var fileSize = files[i].files[0].size;
             if (fileSize > 2097152) {
                 valid_form = false;
                 $('.error').append("<p>File #" + (i + 1).toString() + " is too large</p>");
             }
         }else{
             valid_form = false;
             $('.error').append("<p>File #" + (i + 1).toString() + " is not there!</p>");
         }
     }
     if(!valid_form)event.preventDefault(); // prevent submit
});