Kendo.Upload.Метод загрузки не запускает событие onUpload - PullRequest
0 голосов
/ 03 февраля 2019

Когда компонент Kendo Upload должен выполнить загрузку во второй раз, обработчик события onUpload не запускается.

Я использую загрузку kendo с помощью cropperjs (https://github.com/fengyuanchen/cropperjs/blob/master/README.md), чтобы загрузить изображение, обрезатьзатем он отправляется на сервер. Если изображение слишком большое, сервер отправляет ошибку. Ожидается, что пользователь выберет другую область обрезки и снова отправит изображение. На последнем шаге ничего не происходит.

Здесьспособ обрезки изображения и загрузки при загрузке

        cropper.crop();
        var canvas = cropper.getCroppedCanvas();

        canvas.toBlob(function (blob) {
            image = blob;
            $("#file").data("kendoUpload").upload();
        });

Затем в обработчике onUpload исходное вложенное изображение заменяется на обрезанное.

    e.data = {
        file: image,
        userName: $("#User_Login").val()
    };

На сервере отправляется ошибка:

public virtual ActionResult UpdateUserImage([FromBody]HttpPostedFileBase file, [FromBody]string userName)
        {
            try
            {
                ImageHelper.CheckImage(file);
            }
            catch (Exception e)
            {
                return new LargeJsonResult(new
                {
                    error = e.Message,
                })
                {
                    StatusCode = HttpStatusCode.PreconditionFailed
                };
            }
           ...
        }

Ошибка обрабатывается в обработчике процесса onError:

        var err = e.XMLHttpRequest;
        if (err.status === 412) {
            var body = JSON.parse(err.response);
            alert(body.error);
        }
        else {
            alert("Unable to upload the file. Please check that the 
                        size is less than 10Mb.");
        }   

После этого пользователю разрешено обрезать уже выбранное изображение. И после изменения обрезанной области выполните шаги, описанныеожидается, что выше будет повторяться. Но после $("#file").data("kendoUpload").upload(); в первом блоке кода ничего не происходит. Однако я ожидаю, что должен быть вызван обработчик события onUpload.

1 Ответ

0 голосов
/ 04 февраля 2019

Я нашел решение :) Вместо отправки изображения на сервер и проверки там размера я проверяю размер на клиенте и при необходимости запрещаю отправку.Я имею в виду, прежде чем звонить $("#file").data("kendoUpload").upload(); Я звоню

           if (image.size > 10 * 1024 * 1024) {
                alert("File is too big!");
                return;
            }

Все в порядке.Но если у кого-то все еще есть идея, почему $("#file").data("kendoUpload").upload(); не запускает обработчик события onUpload, было бы здорово поделиться своими мыслями со мной:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...