Как я могу ограничить тип файла с uploadcare в JavaScript?

Я пытаюсь ограничить тип файла (только файлы mp3), когда открываю диалог с uploadcare.

        uploadcare.loadFileGroup(soundGroupID)
        .done(function (fileGroup) {
            uploadcare.openDialog(fileGroup.files(), {
                multiple: true,
                multipleMin: 0,
                fileTypes="mp3"
            }).done(
                function (file) {
                    file.promise().done(
                        function (fileInfo) {
                            //TODO Something
                        });
                });
        })
        .fail(function () {
            // Something went wrong.
        });

Есть ли способ выдвинуть валидатор? Есть ли способ получить доступ к виджету? Как видите, я открываю диалоговое окно, поэтому не могу нигде получить доступ к виджету.

1 ответ

Решение

К сожалению, в текущем API нет валидаторов для диалогов, только для виджетов. Но вы можете создать поддельный виджет и использовать .openDialog() метод на это.

uploadcare.loadFileGroup(soundGroupID)
.done(function (fileGroup) {
    var widget = uploadcare.MultipleWidget('<input data-multiple multiple-min="1">');
    widget.validators.push(function(info) {
        if (info.name !== null) {
            if ( ! /\.mp3$/i.test(info.name)) {
                throw Error('mp3-only');
            }
        }
    });
    widget.openDialog(null).done(
        function (file) {
            file.promise().done(
                function (fileInfo) {
                    //TODO Something
                });
        });
})
.fail(function () {
    // Something went wrong.
});

Кроме того, вы можете передать список валидаторов в приват __validators вариант, но это внутренний API и может быть изменен в будущих версиях.

Другие вопросы по тегам