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, было бы здорово поделиться своими мыслями:)