>

Kendo 업로드 구성 요소가 두 번째로 업로드를 수행해야하는 경우 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 이벤트 핸들러를 실행하지 않습니다. 나와 의견을 나누는 것이 좋습니다. :)

  • 이전 java - 전화 상태가 변경 될 때 http 요청을 보내려면 어떻게해야합니까?
  • 다음 각도기의 팀 시티에서 빌드 설정을 구성하는 방법