aghabalaguluzade Bunu CKEditor'de yapabilmeniz için editore editörde bir değişiklik olduğunda bu değişikliği parse eden, içinde img varsa src etiketine bakan, sonra bu dosya diğer içeriklerde kullanılmış mı kontrol eden, kullanılmamış ise silme için verdiğiniz bir endpointe istek atan bir plugin yazmanız gerekiyor. Endpoint de gelen dosya adına göre dosya silecek. Bu şekilde araştırabilirsiniz.
Bu üstte bahsettiğim yapılabilir gibi ama zahmetli bir iş. O yüzden size bir arayüz önerdim. Arayüz derken uygulamada yüklenen dosyalar diye bir yer yapacaksınız. Burada yüklenen dosyaları listeleyeceksiniz. Yanına da bir tane sil düğmesi. Bu düğmeye basınca dosya adını bir rotaya gönderip içeride sileceksiniz.
Laravel'de dosya yüklemek için Storage kullanıyoruz:
https://laravel.com/docs/9.x/filesystem
https://laravel.com/docs/9.x/requests#storing-uploaded-files
ama siz kullanmamışsınız, onun yerine move yöntemini kullanmışsınız. Bu yöntem Symfony'den gelme ve düz move_uploaded_file() yapıyor. Bu kodları nereden öğreniyorsunuz bilmiyorum. Önce kodunuzu Storage kullanacak şeklide revize etmeniz lazım. Bunu yaptıktan sonra artık Storage::allFiles()
ile yüklediğiniz dosyaların listesine ulaşırsınız. Bu size şöyle bir dizi verir:
[
"1.jpg",
"resim.jpg",
"avatars/user1234.png",
"avatars/user678.png",
]
Şöyle bir controller direkt işinizi çözer:
public function index()
{
$files = Storage::allFiles();
return view('files', compact('files'));
}
public function delete($file)
{
if(!Storage::exists($file)) {
abort(404);
}
// Burada isterseniz veri tabanında resmi aratıp kaç kayıtta kullanıp
// kullanmadığınızı tespit edebilirsiniz ve ona göre silmeye izin
// verebilirsiniz.
Storage::delete($file);
return back();
}