E ticaret projesinde resimler projenin içinde mi yoksa farklı bir platform üzerinden resimleri yükleyip api aracılığıyla çekmek mi daha uygun olur? Araştırmam sonucunda bunun güvenlik ile ilgili yapıldığını gördüm, daha önce böyle bir yaklaşımda bulundunuz mu?
İmage files
- Düzenlendi
okanzen1 Böyle durumlarda cloud tabanlı sistemlerden yardım alınıyor aws,s3 gibi
Media yönetimleriniz için https://spatie.be/docs/laravel-medialibrary/v11/introduction
s3 sikini bu paketin config dosyasında ayarlayabilirsiniz
okanzen1 Yönetmesi kolay, taşıması kolay, yedeklemesi kolay, kompleks güvenlik önlemleri alabiliyorsunuz, bandwidth kullanımını ayırmış oluyorsunuz, çok fazla dosya olan durumlarda fiyat olarak daha uyguna geliyor ve son olarak Docker kullanıyorsanız mecburen ayrı bir yerde tutmanız gerekecek. Her açıdan avantajlı yani.
okanzen1 bir platform üzerinden resimleri yükleyip api aracılığıyla çekmek mi daha uygun olur?
Resimleri göstermek için api ile işlem yapmanıza gerek yok, siz yükleyince size direkt kullanacağınız linki verir:
https://example-bucket.s3.amazonaws.com/images/example.jpg
gibi.
Mesela Laravel kullandığınız için, örneği S3 driver ile kullandığınızda
// example.jpg geldi diyelim
$path = $request->file('image')
->store('images');
$path değeri images/example.jpg olur ve bunu örneğin veri tabanına öyle kaydedersiniz ama Storage::url($path)
yaparsanız size https://example-bucket.s3.amazonaws.com/images/example.jpg
verir.
okanzen1 Elbette Amazon ile API düzeyinde bir işlem yapıyorsunuz ama Laravel'in dosya sistemi sürücü mantığıyla çalıştığından dolayı siz ekstra bir işlem yapmıyorsunuz, sanki yerel dosyalarla çalışıyormuşsunuz gibi hareket ediyorsunuz, gerisini Laravel hallediyor. Öyle ki kodda tek değişiklik yaptığınız yer config/filesystems.php oluyor, kendi yazdığınız kodu değiştirmeden yerel dosya sistemi, S3, FTP vs arasında geçiş yapabiliyorsunuz.