Laravel 10 Dosya Yükleme

L

Laravel 10'da dosya yükleme ve görüntüleme işlemini nasıl yapacağınızı göstereceğim. Detaylara birlikte göz atalım.

Bu örnekte, iki farklı rota oluşturacağız. Biri formu render etmek için "get" yöntemi için, diğeri ise dosya yükleme işlemi için "post" yöntemi için olacak. Basit bir dosya girişi olan bir form oluşturduk. Yani sadece bir dosya seçmeniz ve ardından bu dosyanın "public" klasöründeki "uploads" dizinine yükleneceği bir işlem yapacağız.

Laravel 10 uygulamanızda dosya yükleme işlemini gerçekleştirmek için aşağıdaki adımları takip etmeniz yeterli olacaktır.

Adım 1: Laravel 10 Kurulumu

Bu adım gereksizdir; ancak Laravel uygulamanızı oluşturmadıysanız, aşağıdaki komutu çalıştırabilirsiniz:

composer create-project laravel/laravel example-app

Adım 2: Controller Oluşturma

Bu adımda yeni bir "FileController" oluşturacağız; bu dosyada görünümü render etmek ve dosya depolama mantığını eklemek için "index()" ve "store()" adında iki metodumuz olacak.

Aşağıdaki komutu kullanarak "FileController" oluşturalım:

php artisan make:controller FileController

Daha sonra, Controller dosyasına aşağıdaki kodu ekleyelim.

app/Http/Controllers/FileController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\View\View;
use Illuminate\Http\RedirectResponse;

class FileController extends Controller
{
    /**
     * Kaynağın bir listesini görüntüleyin.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(): View
    {
        return view('fileUpload');
    }
      
    /**
     * Kaynağın bir listesini görüntüleyin.
     *
     * @param  Request  $request
     * @return RedirectResponse
     */
    public function store(Request $request): RedirectResponse
    {
        $request->validate([
            'file' => 'required|mimes:pdf,xlsx,csv|max:2048',
        ]);
      
        $fileName = time() . '.' . $request->file->extension();
       
        $request->file->move(public_path('uploads'), $fileName);
     
        /*  
            Buraya Kod Yaz
            $fileName adını BURADAN DATABASE'de saklayın
        */
       
        return redirect()
            ->with('success', 'Dosyayı başarıyla yüklediniz.')
            ->with('dosya', $fileName);
    }
}

Adım 3: Rotaları Oluşturun ve Ekleyin

Ayrıca, routes/web.php dosyasını açın ve görünümü oluşturmak ve dosya depolama mantığını yönetmek için GET ve POST isteklerini yönetmek üzere rotaları ekleyin.

routes/web.php

<?php
  
use Illuminate\Support\Facades\Route;
  
use App\Http\Controllers\FileController;
  
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Bu, uygulamanız için web rotalarını kaydetmek için kullanabileceğiniz yerdir.
| Bu rotalar, RouteServiceProvider tarafından bir grup içinde yüklenir
| "web" ara yazılım grubunu içerir. Şimdi harika bir şeyler yaratın!
|
*/
  
Route::get('dosya-yukleme', [FileController::class, 'index']);
Route::post('dosya-yukleme', [FileController::class, 'store'])->name('dosya.store');

Adım 4: Blade Dosyası Oluşturun

Son adımda fileUpload.blade.php adında bir dosya oluşturmamız gerekiyor ve bu dosyada dosya giriş butonu ile bir form oluşturacağız. Aşağıdaki kodu kopyalayın ve bu dosyaya yapıştırın.

<!DOCTYPE html>
<html>
<head>
    <title>Laravel 10 Dosya Yükleme Örneği</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container">
<div class="panel panel-primary">

  <div class="panel-heading">
    <h2>Laravel 10 Dosya Yükleme Örneği</h2>
  </div>

  <div class="panel-body">
   
    @if ($message = Session::get('success'))
        <div class="alert alert-success alert-block">
            <strong>{{ $message }}</strong>
        </div>
    @endif
  
    <form action="{{ route('file.store') }}" method="POST" enctype="multipart/form-data">
        @csrf

        <div class="mb-3">
            <label class="form-label" for="inputFile">Dosya:</label>
            <input 
                type="file" 
                name="file" 
                id="inputFile"
                class="form-control @error('file') is-invalid @enderror">

            @error('file')
                <span class="text-danger">{{ $message }}</span>
            @enderror
        </div>

        <div class="mb-3">
            <button type="submit" class="btn btn-success">Yükle</button>
        </div>
   
    </form>
  
  </div>
</div>
</div>
</body>
</html>

Laravel Uygulamasını Çalıştırma:

Gerekli adımların hepsi tamamlandıktan sonra aşağıdaki komutu girip enter tuşuna basarak Laravel uygulamanızı çalıştırmanız gerekmektedir:

php artisan serve

Bu komut, Laravel geliştirme sunucusunu başlatacak ve sunucunun çalıştığını belirten bir mesaj görüntülenecektir. Varsayılan olarak, sunucu 8000 numaralı bağlantı noktasını kullanacaktır.

Daha sonra, web tarayıcınızı açın ve aşağıdaki URL'yi girin:

http://localhost:8000/file-upload

Bu, Laravel uygulamanızın dosya yükleme sayfasına yönlendirecektir. Dosya seçebilir ve "Yükle" düğmesine tıklayarak dosyayı yükleyebilirsiniz.

Lütfen php artisan serve komutunu çalıştırmadan önce ortamınızın düzgün bir şekilde yapılandırıldığından ve tüm bağımlılıkların yüklendiğinden emin olmanız gerektiğini unutmayın.

By Aydın Yağız

Aydın Yağız

Teknolojiye olan tutkumla inovasyonu destekler, kullanıcı deneyimini önceliklerim arasına alırım. Kendi yeteneklerimi ve bilgilerimi paylaşarak, daha geniş bir topluluğun faydalanmasını sağlarım. İş birliği içinde hareket ederek, geleceğin teknoloji dünyasına katkıda bulunmayı hedeflerim. Sizi de bu heyecan verici yolculuğa davet ediyor, fikirlerinizi paylaşmaya ve teknolojiye dair sınırları zorlamaya teşvik ediyorum. Birlikte büyüyelim ve yeni ufuklara açılalım!

İletişime Geçin

Kodlama dünyasına adım atın ve deneyimlerinizi paylaşın. Siz de bu aktif topluluğa katılarak yeni bağlantılar kurun, fikir alışverişinde bulunun ve bilgi birikiminizi artırın.

Özelleştir

Farklı yazı tipleri ve renk seçenekleriyle stilinizi kişiselleştirin. Aşağıdaki örneklerden birini deneyerek sizin için en uygun olanı seçin.

Yazı Tipi Örnekleri

Renk Örnekleri