Laravel Dosya Yükleme: Kapsamlı Bir Adım Adım Eğitim

Yayınlanan: 2024-10-07

İçindekiler

Değiştir

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'));

}

  1. 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

  1. 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.