Пользовательское событие в виджете загрузки пользовательского интерфейса Kendo в асинхронном режиме

#asp.net-mvc #asynchronous #file-upload #kendo-ui

Вопрос:

Я использую загрузку пользовательского интерфейса Kendo в своем проекте, и файлы загружаются асинхронно. Существует событие загрузки, настроенное в javascript, которое запускается для каждого файла при нажатии кнопки загрузки из-за «автоЗапуск: ложь». Есть ли способ запустить другое событие до фактического события загрузки, где я могу проверить, может ли пользователь загружать файлы или нет?(или любая пользовательская логика), например, новое событие должно запускаться только один раз, и если логика возвращает значение true, то вызовите фактические вызовы загрузки(для каждого файла), иначе верните значение false и покажите ошибку.

Комментарии:

1. Взгляните на это — jpllosa.blogspot.com/2021/02/… — он autoUpload: false установился. Как уже предлагалось в ответе, вы можете поместить свою пользовательскую логику в обработчик событий загрузки.

Ответ №1:

Вы можете поместить свою пользовательскую логику в обработчик события загрузки. Если вы решите, что загрузка не должна продолжаться, вы можете отменить ее с помощью e.preventDefault().

Здесь есть хороший и простой пример этого: https://docs.telerik.com/kendo-ui/api/javascript/ui/upload/events/upload Пример кода по этой ссылке приведен ниже:

 <input type="file" name="files" id="photos" />
<script>
    $("#photos").kendoUpload({
        async: {
            saveUrl: "http://my-app.localhost/save",
            removeUrl: "http://my-app.localhost/remove"
        },
        upload: onUpload
    });

    function onUpload(e) {
        // An array with information about the uploaded files
        var files = e.files;

        // Checks the extension of each file and aborts the upload if it is not .jpg
        $.each(files, function () {
            if (this.extension.toLowerCase() != ".jpg") {
                alert("Only .jpg files can be uploaded")
                e.preventDefault();
            }
        });
    }
</script>
 

Комментарии:

1. Но этот метод вызывается для каждого файла. Я хочу вызвать один метод одним нажатием кнопки загрузки. Или это называется только один раз?

2. Я полагаю, что это называется только один раз. Добавьте какую-нибудь консоль. инструкции журнала или отладчик для подтверждения.

3. В настоящее время он вызывается для каждого файла. Поэтому то, что мне точно нужно сделать, — это ограничить количество загружаемых файлов за определенный период времени, допустим, 1 минутой. В настоящее время мы используем вызовы веб-api для загрузки, поэтому для каждого файла выполняется вызов api aync для загрузки. Есть идеи?