D
D
Dima Pautov2017-04-18 10:51:22
JavaScript
Dima Pautov, 2017-04-18 10:51:22

How to send an image edited via Cropper.js to the server?

Good afternoon! I just can't figure out how to upload an image already edited via Cropper.js to the server via ajax?
I have a block with editing the user's avatar.

var
            cropper,
            cropperOptions = {
                preview: '.avatar',
                aspectRatio: 1 / 1
            };

        var
            avatarEditorModal = $('#avatarEditorModal').iziModal({
                history: false,
                width: 600,
                overlayColor: false,
                radius: false
            }),
            avatarEditorBox = $('#editAvatar'),
            avatarEditorImg = $('#editAvatarImg'),
            avatarEditorOpen = $('.edit_avatar');

        var uploadAvatar = $('.upload_photo');

        // Загрузка изображения через input
        function uploadAvatarInInput(input, callback){
            var reader = new FileReader();

            reader.readAsDataURL(input.files[0]);

            reader.onload = function(event) {

                avatarEditorImg
                    .attr('src', event.target.result)
                    .load(function(){

                       callback(avatarEditorImg);

                    });

            };
        }
        
        // Открыть редактор
        $(document).on('opened', avatarEditorModal, function(){
            cropper = new Cropper(avatarEditorImg[0], cropperOptions);
        });
        
        // Закрыть редактор
        $(document).on('closing', avatarEditorModal, function(){
            cropper.destroy();
        });

        // Загрузка аватара в через input
        uploadAvatar.on('change', function(){

            cropper.destroy();

            uploadAvatarInInput(this, function(img){

                cropper = new Cropper(img[0], cropperOptions);

            });

        });
        
        // Загружаем отредактированный аватар на сервер
        avatarEditorBox.on('submit', function(event){

            event.preventDefault();

            $().cropper('getCroppedCanvas').toBlob(function (blob) {
                var formData = new FormData();

                formData.append('croppedImage', blob);

                $.ajax({
                    url: '/path/to/file',
                    type: 'POST',
                    dataType: 'default: Intelligent Guess (Other values: xml, json, script, or html)',
                    data: formData,
                })
                .done(function(){
                    console.log("success");
                })
                .fail(function(){
                    console.log("error");
                });
            });

        });

Went to off. doc . The same is described there, but I get an error
$(...).cropper is not a function

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question