yalcin Normalde disk okuma işlemlerinde hız elde edilebilmesi için klasörleme yapılır çünkü bir klasörde ne kadar çok dosya birikirse o klasördeki dosyalarda arama işlemi o kadar yavaş oluyor, özellikle listeleme yapmanız gerekirse. O yüzden hızlı erişim ve arama kolaylığı için belli bir yapıya göre klasörleme yapabilirsiniz. Mesela:
$folder = sprintf('%s/%s/%s', $request->user()->id, date('Y/m/d'), Str::random(8));
// Burada $path değeri /13/2023/03/30/jd6j7o8I/my-photo.jpg oluyor.
$path = $imageFile->storeAs($folder, $Filename , "public");
Böylece dosya isimlerinde benzersiz kontrolü yapmanıza gerek kalmaz. Dosyalarınız şu şekilde olur:
/13/2023/03/30/jd6j7o8I/my-photo.jpg
/13/2023/03/30/jd6j7o8I/my-photo_thumbnail.jpg
/13/2023/03/30/jd6j7o8I/my-photo_60x60.jpg
/13/2023/04/01/ImLSNJJ7/my-photo.jpg
/13/2023/04/01/ERIjwgC5/my-photo.jpg
/13/2023/04/02/AvBtobTH/my-photo.jpg
Bu tarz bir yol da seçebilirsiniz.
Videodaki kodu da düzelteyim. UploadedFile::storeAs() yöntemi ile Storage kullanılmış, öyleyse dosya varlığı da Storage ile kontrol edilmeli, bu önemli:
if(Storage::disk('public')->exists('/13/2023/03/30/jd6j7o8I/my-photo.jpg')) {
// ...
}