javascript ckeditor ckeditor5

javascript - ¿Cómo habilitar el soporte de carga de imágenes en CKEditor 5?



ckeditor5 (1)

Sí, la carga de imágenes está incluida en todas las compilaciones disponibles. Sin embargo, para que funcione, debe configurar uno de los adaptadores de carga existentes o escribir uno propio. En resumen, el adaptador de carga es una clase simple cuya función es enviar un archivo a un servidor (de la forma que desee) y resolver la promesa devuelta una vez que se haya hecho.

Puede leer más en la guía oficial de carga de imágenes o ver el breve resumen de las opciones disponibles a continuación.

Adaptadores de carga oficiales

Hay dos adaptadores incorporados:

Descargo de responsabilidad: estos son servicios patentados.

Adaptador de carga personalizado

También puede escribir su propio adaptador de carga que enviará los archivos de la manera que desee a su servidor (o donde quiera que los envíe).

Consulte la guía del adaptador de carga de imágenes personalizadas para aprender cómo implementarla.

Un ejemplo de adaptador de carga (es decir, sin seguridad incorporada) puede verse así:

class MyUploadAdapter { constructor( loader ) { // CKEditor 5''s FileLoader instance. this.loader = loader; // URL where to send files. this.url = ''https://example.com/image/upload/path''; } // Starts the upload process. upload() { return new Promise( ( resolve, reject ) => { this._initRequest(); this._initListeners( resolve, reject ); this._sendRequest(); } ); } // Aborts the upload process. abort() { if ( this.xhr ) { this.xhr.abort(); } } // Example implementation using XMLHttpRequest. _initRequest() { const xhr = this.xhr = new XMLHttpRequest(); xhr.open( ''POST'', this.url, true ); xhr.responseType = ''json''; } // Initializes XMLHttpRequest listeners. _initListeners( resolve, reject ) { const xhr = this.xhr; const loader = this.loader; const genericErrorText = ''Couldn/'t upload file:'' + ` ${ loader.file.name }.`; xhr.addEventListener( ''error'', () => reject( genericErrorText ) ); xhr.addEventListener( ''abort'', () => reject() ); xhr.addEventListener( ''load'', () => { const response = xhr.response; if ( !response || response.error ) { return reject( response && response.error ? response.error.message : genericErrorText ); } // If the upload is successful, resolve the upload promise with an object containing // at least the "default" URL, pointing to the image on the server. resolve( { default: response.url } ); } ); if ( xhr.upload ) { xhr.upload.addEventListener( ''progress'', evt => { if ( evt.lengthComputable ) { loader.uploadTotal = evt.total; loader.uploaded = evt.loaded; } } ); } } // Prepares the data and sends the request. _sendRequest() { const data = new FormData(); data.append( ''upload'', this.loader.file ); this.xhr.send( data ); } }

Que luego se puede habilitar así:

function MyCustomUploadAdapterPlugin( editor ) { editor.plugins.get( ''FileRepository'' ).createUploadAdapter = ( loader ) => { return new MyUploadAdapter( loader ); }; } ClassicEditor .create( document.querySelector( ''#editor'' ), { extraPlugins: [ MyCustomUploadAdapterPlugin ], // ... } ) .catch( error => { console.log( error ); } );

NOTA: Lo anterior es solo un ejemplo de adaptador de carga. Como tal, no tiene mecanismos de seguridad incorporados (como la protección CSRF).

Usaré el ckeditor v5 en mi proyecto. Estoy tratando de usar el complemento de imagen, pero no encuentro suficiente información al respecto.

Si ve la demostración here , puede cargar imágenes fácilmente con Arrastrar y soltar. Pero cuando lo intente con la descarga del globo de descarga no pasa nada cuando intento arrastrar y soltar una imagen. Tampoco hay error.

¿Hay alguna manera de utilizar este soporte de imagen en la variante descargable?