ClassicEditor
.create( editorElement, {
ckfinder: {
uploadUrl: 'my_server_url'
}
} )
.then( ... )
.catch( ... );
Quelle devrait être ma réponse du serveur? J'utilise Java dans le backend . Quelle que soit ma réponse, une boîte de dialogue "Impossible de télécharger le fichier" s'affiche.
Réponse de réussite:
{
"uploaded": true,
"url": "http://127.0.0.1/uploaded-image.jpeg"
}
Réponse d'échec:
{
"uploaded": false,
"error": {
"message": "could not upload this image"
}
}
class UploadAdapter {
constructor( loader ) {
this.loader = loader;
}
upload() {
const data = new FormData();
data.append('typeOption', 'upload_image');
data.append('file', this.loader.file);
return new Promise((resolve, reject) => {
axios({
url: `${API}forums`,
method: 'post',
data,
headers: {
'Authorization': tokenCopyPaste()
},
withCredentials: true
}).then(res => {
console.log(res)
var resData = res.data;
resData.default = resData.url;
resolve(resData);
}).catch(error => {
console.log(error)
reject(error)
});
});
}
abort() {
// Reject promise returned from upload() method.
}
}
<CKEditor
editor={ ClassicEditor }
data="<p>Hello from CKEditor 5!</p>"
config={{}}
onInit={ editor => {
editor.ui.view.editable.editableElement.style.height = '200px';
editor.plugins.get( 'FileRepository' ).createUploadAdapter = function( loader ) {
return new UploadAdapter( loader );
};
} }
onChange={ ( event, editor ) => {
console.log(editor.getData())
} }
/>
Vous pouvez configurer CKEditor pour télécharger des fichiers
ClassicEditor.create (document.querySelector ('#editor'), {
cloudServices: {
tokenUrl: 'https://example.com/cs-token-endpoint',
uploadUrl: 'https://your-organization-id.cke-cs.com/easyimage/upload/'
}
} )
.then( ... )
.catch( ... );
Pour plus de détails, visitez ce lien: https://docs.ckeditor.com/ckeditor5/latest/features/image-upload.html
voici mon code pour Ckeditor 5 et le framework Phalcon. # products_desc pointe sur textarea id.
<script>
var myEditor;
ClassicEditor
.create( document.querySelector( '#products_desc' ) ,
{
ckfinder: {
uploadUrl: 'Ckfinder/upload'
}
}
)
.then( editor => {
console.log( 'Editor was initialized', editor );
myEditor = editor;
} )
.catch( err => {
console.error( err.stack );
} );</script>
et mon contrôleur php:
<?php
use Phalcon\Mvc\Controller;
class CkfinderController extends Controller
{
public function uploadAction()
{
try {
if ($this->request->hasFiles() == true) {
$errors = []; // Store all foreseen and unforseen errors here
$fileExtensions = ['jpeg','jpg','png','gif','svg'];
$uploadDirectory = "../public/Uploads/";
$Y=date("Y");
$M=date("m");
foreach ($this->request->getUploadedFiles() as $file) {
if (in_array($file->getExtension(),$fileExtensions)) {
if($file->getSize()<2000000)
{
if (!file_exists($uploadDirectory.$Y)) {
mkdir($uploadDirectory.$Y, 0777, true);
}
if (!file_exists($uploadDirectory.$Y.'/'.$M)) {
mkdir($uploadDirectory.$Y.'/'.$M, 0777, true);
}
$namenew=md5($file->getName().time()).'.'.$file->getExtension();
$uploadDirectory .=$Y.'/'.$M.'/';
$file->moveTo($uploadDirectory.$namenew);
}
else{
$errors[] = "This file is more than 2MB. Sorry, it has to be less than or equal to 2MB";
}
}
else{$errors[] = "This file extension is not allowed. Please upload a JPEG ,svg,gif,,jpg,PNG file";}
if(empty($errors))
{
echo '{
"uploaded": true,
"url": "http://localhost/cms/public/Uploads/'.$Y.'/'.$M.'/'.$namenew.'"}';
}
else{
echo '{
"uploaded": false,
"error": {
"message": "could not upload this image1"
}';}
}
}
else{
echo '{
"uploaded": false,
"error": {
"message": "could not upload this image1"
}';}
}
catch (\Exception $e) {
echo '{
"uploaded": false,
"error": {
"message": "could not upload this image0"
}';
}
}
}
?>
La propriété ckfinder.uploadUrl
configure le plugin CKFinderUploadAdapter
. Ce plugin est responsable de la communication avec le connecteur côté serveur de CKFinder .
En d'autres termes, votre serveur doit donc exécuter le connecteur côté serveur de CKFinder. Il s’agit d’un logiciel propriétaire, je ne vais donc pas en dire plus sur son fonctionnement.
Si vous souhaitez en savoir plus sur tous les moyens de configurer le téléchargement d'images, veuillez lire Comment activer la prise en charge du téléchargement d'images dans CKEditor 5? .