Kendo.Upload. Метод загрузки не запускает событие onUpload

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

Я использую загрузку кендо с помощью 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 ответ

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

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

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

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