CKEditor 5 Нестандартная проблема с адаптером загрузки изображений - PullRequest
0 голосов
/ 17 марта 2019

Я следовал руководству созданному адаптеру загрузчика. с сервисом отдыха Джерси, но я не могу загрузить изображение. кто-нибудь может помочь?

Кроме того, мне нужно получить имя расширения изображения. можно это сделать?

HTML:

<textarea id="editor" name="content" class="form-control" rows="3" ></textarea> 
<script src="https://cdn.ckeditor.com/ckeditor5/12.0.0/classic/ckeditor.js"></script> 
<script src="https://cdn.ckeditor.com/ckeditor5/12.0.0/classic/translations/zh-cn.js"></script>

Javascripts loader.file.name всегда возвращает пустое значение.

class MyUploadAdapter { 
        constructor(loader) { 
        this.loader = loader; 
    } 
    upload() { 
        return new Promise((resolve, reject) => { 
            var data = new FormData(); 
            data.append('upload', this.loader.file); 
            $.ajax({url: $.trim($("#txtContextPath").val()) + "/home/picture/upload-editor", 
                type: 'POST', data: data, processData: false, contentType: false, datatype: 'json', 
                success: function (response) { 
                    resolve(response); 
                }, 
                error: function (jqXHR, textStatus) { 
                    reject(textStatus + jqXHR.status + ":" + jqXHR.statusText); 
                } 
             }); 
        }); 
    } 
    abort() { 
        reject("Upload abort"); 
    } 
} 
function MyCustomUploadAdapterPlugin(editor) { 
    editor.plugins.get('FileRepository').createUploadAdapter = (loader) => { 
    // Configure the URL to the upload script in your back-end here! 
        alert(loader.file.name); // always undefined
        return new MyUploadAdapter(loader); 
    }; 
}

$(document).ready(function () {

    ClassicEditor.create(document.querySelector('#editor'), { 
        language: "zh-cn", 
        extraPlugins: [MyCustomUploadAdapterPlugin] 
    }).catch(error => { 
        console.log(error); 
    }); 
});

Java-код ниже службы отдыха Джерси. из бэкэнда я могу получить только входной поток длиной 16 байт. также нет имени файла или имени расширения в filedetail, детали файла имеют только значение «upload».

@POST
@Path("upload-editor")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.TEXT_PLAIN)
public String uploadEditor(@FormDataParam("upload") InputStream uploadedInputStream, @FormDataParam("upload") FormDataContentDisposition fileDetail) {...}
...