Как заставить jQuery ограничивать типы файлов при загрузке? - PullRequest
132 голосов
/ 16 марта 2009

Я бы хотел, чтобы jQuery ограничивал поле загрузки файла только jpg / jpeg, png и gif. Я делаю проверку бэкэнда уже с PHP. Я запускаю кнопку отправки через функцию JavaScript, поэтому мне просто нужно знать, как проверять типы файлов перед отправкой или предупреждением.

Ответы [ 13 ]

0 голосов
/ 10 августа 2014

Если вы имеете дело с несколькими (html 5) загрузками файлов, я взял верхний предложенный комментарий и немного его изменил:

    var files = $('#file1')[0].files;
    var len = $('#file1').get(0).files.length;

    for (var i = 0; i < len; i++) {

        f = files[i];

        var ext = f.name.split('.').pop().toLowerCase();
        if ($.inArray(ext, ['gif', 'png', 'jpg', 'jpeg']) == -1) {
            alert('invalid extension!');

        }
    }
0 голосов
/ 28 февраля 2014
<form enctype="multipart/form-data">
   <input name="file" type="file" />
   <input type="submit" value="Upload" />
</form>
<script>
$('input[type=file]').change(function(){
    var file = this.files[0];
    name = file.name;
    size = file.size;
    type = file.type;
    //your validation
});
</script>
0 голосов
/ 26 декабря 2013
function validateFileExtensions(){
        var validFileExtensions = ["jpg", "jpeg", "gif", "png"];
        var fileErrors = new Array();

        $( "input:file").each(function(){
            var file = $(this).value;
            var ext = file.split('.').pop();
            if( $.inArray( ext, validFileExtensions ) == -1) {
                fileErrors.push(file);
            }
        });

        if( fileErrors.length > 0 ){
            var errorContainer = $("#validation-errors");
            for(var i=0; i < fileErrors.length; i++){
                errorContainer.append('<label for="title" class="error">* File:'+ file +' do not have a valid format!</label>');
            }
            return false;
        }
        return true;
    }
...