Web Doktoru - Laravel’de File Storage (Dosya Depolama) Kullanımı
Laravel, dosya yükleme ve depolama işlemleri için güçlü bir Storage (Dosya Depolama) mekanizması sunar. Bu mekanizma, yerel dosya sisteminden Amazon S3, FTP, Dropbox gibi harici depolama hizmetlerine kadar birçok farklı sürücüyü destekler. Bu makalede, Laravel’in Storage sistemini nasıl kullanacağınızı adım adım öğreneceksiniz.
Laravel, dosya depolama işlemlerini config/filesystems.php dosyası üzerinden yönetir. Bu dosya, farklı depolama disklerini ve sürücülerini tanımlamanızı sağlar. Varsayılan olarak, Laravel aşağıdaki diskleri sunar:
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
],
],local: Dosyaları yerel sunucuda storage/app klasörüne kaydeder.public: Dosyaları storage/app/public klasörüne kaydeder ve bu dosyalara dışarıdan erişim sağlar.s3: Dosyaları Amazon S3 üzerinde depolar.Laravel, varsayılan olarak local diskini kullanır. Eğer public veya s3 gibi bir disk kullanmak isterseniz, .env dosyanızda aşağıdaki ayarı değiştirebilirsiniz:
FILESYSTEM_DISK=publicDosya yüklemek için, request içindeki dosyayı Storage sınıfı ile kaydedebilirsiniz. Örneğin, bir dosya yükleme işlemi şu şekilde gerçekleştirilebilir:
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
public function upload(Request $request) {
$path = $request->file('file')->store('uploads');
return response()->json(['path' => $path]);
}Bu kod, yüklenen dosyayı storage/app/uploads/ klasörüne kaydeder.
Eğer farklı bir disk kullanmak isterseniz, store() metoduna ikinci parametre olarak disk adını belirtebilirsiniz:
$request->file('file')->store('uploads', 'public');Bu, dosyayı storage/app/public/uploads/ klasörüne kaydeder.
Eğer özel bir dosya adı belirlemek isterseniz, storeAs() metodunu kullanabilirsiniz:
$request->file('file')->storeAs('uploads', 'myfile.jpg', 'public');Bu, dosyayı storage/app/public/uploads/myfile.jpg olarak kaydeder.
Dosya URL’sini almak için Storage::url() metodunu kullanabilirsiniz:
$url = Storage::url('uploads/myfile.jpg');
echo $url;
// Çıktı: http://localhost/storage/uploads/myfile.jpgEğer local disk kullanıyorsanız, php artisan storage:link komutunu çalıştırarak storage klasörünü public/storage ile ilişkilendirmelisiniz:
php artisan storage:linkBu işlem, storage/app/public klasöründeki dosyalara public/storage üzerinden erişim sağlar.
Bir dosyayı silmek için delete() metodunu kullanabilirsiniz:
Storage::delete('uploads/myfile.jpg');Birden fazla dosyayı aynı anda silmek isterseniz:
Storage::delete(['file1.jpg', 'file2.jpg']);Bir dosyanın olup olmadığını kontrol etmek için exists() metodunu kullanabilirsiniz:
if (Storage::exists('uploads/myfile.jpg')) {
echo "Dosya mevcut!";
} else {
echo "Dosya bulunamadı!";
}Bir dosyanın içeriğini okumak için get() metodunu kullanabilirsiniz:
$content = Storage::get('uploads/myfile.txt');
echo $content;Bir dosyaya içerik yazmak için put() metodunu kullanabilirsiniz:
Storage::put('uploads/myfile.txt', 'Merhaba Laravel!');Bir dosyanın içeriğine ekleme yapmak için append() metodunu kullanabilirsiniz:
Storage::append('uploads/myfile.txt', 'Yeni bir satır!');Bir dosyanın içeriğini tamamen değiştirmek için replace() metodunu kullanabilirsiniz:
Storage::replace('uploads/myfile.txt', 'Bu tamamen yeni bir içerik.');Eğer dosyalarınızın dışarıdan erişilebilir olmasını istiyorsanız, public diskini kullanmalısınız:
$request->file('file')->store('uploads', 'public');Dosyayı erişilebilir yapmak için Storage::url() metodunu kullanabilirsiniz:
echo Storage::url('uploads/myfile.jpg');
// Çıktı: http://localhost/storage/uploads/myfile.jpgEğer dosyaları Amazon S3 üzerinde saklamak istiyorsanız, AWS kimlik bilgilerinizi .env dosyanıza ekleyin:
AWS_ACCESS_KEY_ID=your-access-key
AWS_SECRET_ACCESS_KEY=your-secret-key
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=your-bucket-name
FILESYSTEM_DISK=s3Daha sonra dosya yüklemek için şu kodu kullanabilirsiniz:
$request->file('file')->store('uploads', 's3');Ve dosyanın URL’sini almak için:
$url = Storage::disk('s3')->url('uploads/myfile.jpg');Laravel’in Storage mekanizması, dosya yönetimi için esnek ve güçlü bir çözüm sunar. Bu makalede, dosya yükleme, silme, okuma ve yazma işlemlerini nasıl gerçekleştireceğinizi öğrendiniz. Ayrıca, yerel dosya sisteminden Amazon S3 gibi harici depolama hizmetlerine kadar farklı sürücüleri nasıl kullanacağınızı inceledik.
Eğer Laravel ile web uygulamaları geliştiriyorsanız, bu özellikleri kullanarak dosya yönetimini kolayca gerçekleştirebilir ve uygulamanızın işlevselliğini artırabilirsiniz. 🚀
Wordpress ile ilgilenmeye başlamışsanız ve aklınızda güvenliği nasıl sağlayacağınız varsa, bu eklentimiz tam aradığınız türden.…
Dijital pazarlama stratejilerinde başarılı olmak için SEO (Arama Motoru Optimizasyonu), GEO (Coğrafi Optimizasyon) ve AEO…
Günümüzde bir web sitesi sahibi olmak, hem bireyler hem de işletmeler için oldukça önemli hale…
Web Sunucusu Nedir? Web sunucusu, kullanıcıların internet üzerinden bir web sayfasına erişmesini sağlayan güçlü bir…
İçerik oluşturmak kolaydır. Özellikle son zamanlarda gelişen yapay zeka sayesinde. Ancak insanların hatırladığı marka içeriği…
Perfex CRM, hızlı kurulumu ve sade arayüzüyle Türkiye’de giderek daha fazla tercih edilen, Codeigniter altyapısı…