2

当我打开带有 uploadcare 的对话框时,我试图限制文件类型(仅限 mp3 文件)。

        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.
        });

有什么方法可以推送验证器吗?有什么方法可以访问小部件吗?如您所见,我正在打开一个对话框,因此我无法在任何地方访问小部件。

4

1 回答 1

2

不幸的是,当前 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,可以在未来版本中更改。

于 2014-11-10T18:55:33.200 回答