Öncelikle konu ile ilgili dokümanlar burada:
https://ckeditor.com/docs/ckeditor4/latest/guide/dev_file_upload.html
Kısaca bahsetmek gerekirse; config.js dosyasına resim yükleme adresini ekliyorsunuz:
CKEDITOR.editorConfig = function (config) {
//...
config.uploadUrl = '/admin/media/upload';
};
Kullanıcı editöre resim yapıştırırsa ya da fare ile bırakırsa (drag&drop dediğimiz)
/admin/media/upload adresine ajax ile bu resim
upload adı altında gönderiliyor.
Siz de /admin/media/upload rotasına bağlı ilgili controller yöntemi içerisinde, örneğin
MediaController::ckeditorUpload(), bu dosyaya ulaşıyorsunuz. Klasik
$request->file('upload') şeklinde mesela.
Sonra istediğiniz yükleme, veritabanına kayıt vs işlemi yaptırıp sonucu JSON response şeklinde dönderiyorsunuz:
Başarılı ise:
{
"uploaded": 1,
"fileName": "resim.jpg",
"url": "/uploads/posts/25/resim.jpg"
}
Başarısız ise:
{
"uploaded": 0,
"error": {
"message": "Hata mesajı"
}
}
Sonuç başarılı ise editor resmi yapıştırdığınız/bıraktığınız noktaya şu kodu ekliyor:
<img src="/uploads/posts/25/resim.jpg" alt="">
Sonra postu veritabanına kaydediyorsunuz.
Elbette eklenen tüm resimleri görmek/silmek isterseniz bir tane dosya yöneticisi gibi bir şeyler hazırlamanız gerekiyor. CKFinder diye CKEditor'ü yapanlara ait bir dosya yöneticisi var ama ücretli.