Laravel Dosya Yükleme: Kapsamlı Bir Adım Adım Eğitim
Yayınlanan: 2024-10-07İçindekiler
Laravel Dosya Yükleme
Dosya yükleme, birçok web uygulamasında kullanıcıların resimler, belgeler veya videolar gibi çeşitli dosya türlerini yüklemelerine olanak tanıyan önemli bir özelliktir. Popüler bir PHP çerçevesi olan Laravel, dosya yüklemelerini işlemek için sorunsuz ve güvenli bir yol sunar. Bu eğitimde, Laravel'de dosya yüklemelerinin sıfırdan nasıl kurulacağını ve uygulanacağını keşfedeceğiz. İster yeni başlayan ister orta düzey bir geliştirici olun, bu kılavuz Laravel'de dosya yükleme konusunda uzmanlaşmanıza yardımcı olacaktır.
1. Laravel Dosya Yüklemeye Giriş
Dosya yüklemeleri modern web uygulamalarının ayrılmaz bir parçasıdır. Profil resimleri, özgeçmişler veya multimedya içeriğinin yüklenmesi olsun, güvenilir ve emniyetli bir dosya yükleme sistemine sahip olmak çok önemlidir. Laravel, yerleşik fonksiyonlarıyla bu süreci basit ve verimli hale getirir. Dosya doğrulama, depolama ve güvenlik desteğiyle Laravel, dosya yüklemelerini yönetmenin kusursuz bir yolunu sunar.
Bu eğitimde şunları yapacağız:
- Bir dosya yükleme formu oluşturun.
- Dosya doğrulamayı yönetin.
- Dosyaları sunucuda saklayın.
- Yüklenen dosyaları görüntüleyin.
- Dosya yükleme işlemini güvenli hale getirin.
Bu kılavuzun sonunda, Laravel uygulamalarında dosya yüklemelerinin nasıl uygulanacağı ve özelleştirileceği konusunda sağlam bir anlayışa sahip olacaksınız.
2. Önkoşullar
Öğreticiye dalmadan önce makinenizde aşağıdakilerin yüklü olduğundan emin olun:
- PHP>= 8.0
- Besteci(PHP için Bağımlılık Yöneticisi)
- Laravel 9 veya üzeri
- Veritabanı yönetimi için MySQL veya SQLite
- Temel Laravel ve PHP bilgisi
Laravel'in nasıl kurulacağına aşina değilseniz resmi Laravel belgelerine bakın veya yeni bir Laravel projesi oluşturmak için aşağıdaki komutu kullanın:
darbe
Kodu kopyala
besteci yarat-proje –tercih-dist laravel/laravel dosya yükleme eğitimi
Proje oluşturulduktan sonra proje klasörüne gidin:
darbe
Kodu kopyala
cd dosyası yükleme eğitimi
3. Laravel Projesi Kurmak
Laravel projeniz kurulduktan sonra temel ayarları yapılandıralım:
Veritabanı Yapılandırması:Kök dizindeki .env dosyasını açın ve veritabanı kimlik bilgilerinizi güncelleyin. MySQL kullanıyorsanız aşağıdaki alanları güncelleyin:
düz metin
Kodu kopyala
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_upload
DB_USERNAME=kök
DB_PASSWORD=
.env dosyasını yapılandırdıktan sonra varsayılan tabloları taşımak için aşağıdaki komutu çalıştırın:
darbe
Kodu kopyala
php zanaatkâr geçişi
A. Bootstrap'i yükleyin (İsteğe bağlı)
Yükleme formuna stil vermek için kolaylıkla Bootstrap'i dahil edebilirsiniz. Resources/views/layouts klasöründe bir düzen.blade.php dosyası oluşturun ve Bootstrap'i ekleyin:
HTML
Kodu kopyala
<!DOCTYPEhtml>
<html lang=”tr”>
<kafa>
<meta karakter kümesi=”UTF-8″>
<meta name=”viewport” content=”width=device-width, startup-scale=1,0″>
<title>Dosya Yükleme Eğitimi</title>
<link href=”https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css” rel=”stylesheet”>
</head>
<gövde>
<div class=”konteyner mt-5″>
@yield('içerik')
</div>
</body>
</html>
4. Dosya Yükleme Formu Oluşturma
Şimdi bir dosya yükleme formu oluşturalım.
Bir Denetleyici Oluşturun:Dosya yüklemelerini yönetmek için bir denetleyici oluşturun:
darbe
Kodu kopyala
php artisan make:denetleyici FileUploadController
Formu Tanımlayın:Resources/views klasöründe aşağıdaki kodla upload.blade.php adında bir dosya oluşturun :
HTML
Kodu kopyala
@extends('layouts.layout')
@bölüm('içerik')
<div sınıfı=”satır”>
<div class=”col-md-6 ofset-md-3″>
<h3 class=”text-center”>Dosya Yükleme</h3>
<form action=”{{ Route('file.upload.post') }}” method=”POST” enctype=”multipart/form-data”>
@csrf
<div class=”form-group mb-3″>
<label for=”file”>Bir dosya seçin:</label>
<input type=”file” class=”form-control” name=”file” id=”file”>
@hata('dosya')
<small class=”text-danger”>{{ $message }</small>
@enderror
</div>
<button type=”submit” class=”btn btn-primary”>Yükle</button>
</form>
</div>
</div>
@endsection
Rotaları Ayarlayın:Routes/web.php dosyasında , formu görüntülemek ve dosya yüklemelerini yönetmek için rotaları tanımlayın:
php
Kodu kopyala
App\Http\Controllers\FileUploadController'ı kullanın;
Route::get('upload', [FileUploadController::class, 'showForm'])->name('file.upload');
Route::post('upload', [FileUploadController::class, 'uploadFile'])->name('file.upload.post');
5. Dosya Yükleme Mantığını Kullanma
FileUploadController.php dosyasına , dosya yükleme işlemini gerçekleştirecek mantığı yazın:
Formu Göster:
php
Kodu kopyala
genel işlev showForm() {
dönüş görünümü('yükleme');
}
Dosya Yüklemelerini Yönetme:
Dosya yüklemelerini yönetmek için aynı denetleyiciye aşağıdaki yöntemi ekleyin:
php
Kodu kopyala
genel işlev uploadFile(İstek $istek) {
// Yüklenen dosyayı doğrula
$istek->doğrula([
'dosya' => 'gerekli|dosya|mimes:jpeg,png,pdf,docx|max:2048',
]);
//Dosyayı sakla
if ($istek->dosya('dosya')) {
$fileName = zaman() . '_' . $request->file->getClientOriginalName();
$filePath = $request->file('file')->storeAs('uploads', $fileName, 'public');
}
return back()->with('success', 'Dosya başarıyla yüklendi.');
}
Bu yöntem, dosya doğrulama işlemini gerçekleştirir, dosyanın mevcut olup olmadığını kontrol eder ve onu saveAs yöntemini kullanarak saklar.
6. Dosya Yüklemelerini Doğrulama
Doğrulama, kullanıcıların yalnızca izin verilen dosya türlerini ve boyutlarını yüklediğinden emin olmak için kritik öneme sahiptir. Laravel'in doğrulama yöntemi bu süreci basitleştirir. Burada kullanılan doğrulama kuralları şunlardır:
- gerekli : Dosyanın yüklenmesini sağlar.
- file : Yüklenen öğenin bir dosya olmasını sağlar.
- mimes : İzin verilen dosya türlerini belirtir (örneğin, jpeg, png, pdf, docx).
- max : Kilobayt cinsinden maksimum dosya boyutunu belirtir (örneğin, 2048 KB = 2 MB).
Bu kuralları uygulamanızın gereksinimlerine uyacak şekilde özelleştirebilirsiniz.
7. Dosyaların Saklanması
Laravel'in Depolama cephesi, dosyaları kolayca saklamanıza olanak tanır. Yukarıdaki örnekte dosyayı public/uploads dizininde depolamak için storeAs yöntemini kullanıyoruz . Public/uploads klasörünü erişilebilir kılmak için depolama dizinini ortak klasöre bağlamanız gerekir. Aşağıdaki komutu çalıştırın:
darbe
Kodu kopyala
php artisan depolama:bağlantı
Bu komut , Storage/app/public ile public/storage arasında sembolik bir bağlantı oluşturur .
8. Yüklenen Dosyaları Görüntüleme
Yüklenen dosyaları görüntülemek için bunları depolama klasöründen alın ve Depolama cephesini kullanarak bir URL oluşturun. Resimleri veya dosyaları şu şekilde görüntüleyebilirsiniz:
Denetleyicide:
php
Kodu kopyala
genel işlev showUploads() {
$dosyalar = Depolama::disk('genel')->dosyalar('yüklemeler');
return view('yüklemeler', kompakt('dosyalar'));
}
- Görünümde:
Resources/views/uploads.blade.php dosyası oluşturun :
HTML
Kodu kopyala
@extends('layouts.layout')
@bölüm('içerik')
<h3>Yüklenen Dosyalar:</h3>
<ul>
@foreach($dosyalar as $dosya)
<li><a href=”{{ asset('storage/' . $file) }}”>{{ basename($file) }</a></li>
@endforeach
</ul>
@endsection
- Bu, indirme bağlantılarını içeren yüklenen dosyaların bir listesini oluşturacaktır.
9. Dosya Yüklemelerinin Güvenliğini Sağlama
Dosya yüklemeleri, düzgün şekilde yönetilmediği takdirde güvenlik riskleri oluşturabilir. Dosya yüklemelerini güvenli hale getirmeye yönelik bazı en iyi uygulamalar şunlardır:
- İzin Verilen Dosya Türlerini Sınırla: Dosya türünü her zaman mimes kuralını kullanarak doğrulayın.
- Dosya Boyutunu Sınırla: Aşırı sunucu kaynağı tüketimini önlemek için dosya boyutlarını sınırlayın.
- Doğru Dosya Adlandırmasını Kullanın: Mevcut dosyaların üzerine yazılmasını önlemek için dosyaları benzersiz adlar kullanarak saklayın.
- Dosyaları Tarayın: Kötü amaçlı yüklemeleri tespit etmek için antivirüs veya dosya tarama araçlarını kullanmayı düşünün.
- Genel Erişimi Kısıtlayın: Hassas dosyaları herkesin erişebileceği dizinlerde saklamaktan kaçının. Özel dosyalar için Laravel'in depolama dizinini kullanabilir ve bunlara güvenli bir şekilde hizmet verecek bir denetleyici oluşturabilirsiniz.
10. Sonuç
Dosya yüklemeleri birçok web uygulaması için hayati bir özelliktir ve Laravel, yerleşik araçları ve işlevleriyle süreci basitleştirir. Bu eğitimde, dosya yüklemelerini ayarlama, dosyaları doğrulama ve saklama, bunları görüntüleme ve yükleme işlemini güvence altına almanın temellerini ele aldık. Bu temel ile dosya yükleme işlevini projenizin ihtiyaçlarına uyacak şekilde özelleştirebilir ve genişletebilirsiniz.