#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 для загрузки. Есть идеи?