Laravel'da Adım Adım Resim Yükleme Rehberi

Yazar Mehmet Emin SAYIM
Yayın Tarihi May 2024
Gösterimler 42 Gösterim
Beğeniler 0 Beğeni
Laravel'da Adım Adım  Resim Yükleme Rehberi

Laravel'de Resim Yükleme Nasıl Yapılır?

Merhaba Laravel Dostları,

Bu Laravel rehberinde, Laravel'de Resim Yükleme işlemini açıklayacağım.

Bu adımları kullanarak, Laravel'de herhangi bir ortam dosyasını akıllıca yükleyebilirsiniz. Başlamadan önce bazı ön koşullara ihtiyacımız var.

Laravel'de Resim Yükleme Adımları:

Adım 1: Spatie medya kütüphanesini yükleyin

Aşağıdaki komutu projenizin kök dizinine çalıştırın ve projenize Spatie/laravel-medialibrary paketini ekleyin:

$ composer require spatie/laravel-medialibrary

Spatie/laravel-medialibrary'nin tanıtımı:

Bu paket, her türlü dosyayı Eloquent modelleriyle ilişkilendirebilir. Çalışmak için basit, akıcı bir API sağlar.

Adım 2: Spatie/laravel-medialibrary'yi yapılandırın

Aşağıdaki komutu çalıştırın:

$ php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" –tag="migrations"

Bu komut, migrations dosyasını ve hizmet sağlayıcısını yayınlar.

$ php artisan migrate

Veritabanınıza medya tablosunu taşıyın.

Adım 3: Kullanıcı rotasını oluşturun

route/web.php dosyanıza aşağıdaki kodu ekleyin:

use App\Http\Controllers\UserController;
use Illuminate\Support\Facades\Route;
 
Route::get('/users', [UserController::class, 'index'])->name('user.index');
Route::get('/user', [UserController::class, 'create'])->name('user.create');
Route::post('/user', [UserController::class, 'store'])->name('user.store');

Adım 4: İsteği işlemek için bir Controller oluşturun

$ php artisan make:controller UserController

Şimdi aşağıdaki dizine gidin:

app/Http/Controllers/UserController.php

Ve aşağıdaki kodu ekleyin:

<?php
 
namespace App\Http\Controllers;
 
use App\Models\User;
use Illuminate\Http\Request;
 
class UserController extends Controller
{
    public function index(Request $request)
    {
        $users = User::all();
        return view('user.index', compact('users'));
    }
 
    public function create(Request $request)
    {
        return view('user.create');
    }
 
    public function store(Request $request)
    {
        $user = User::create([
            'name' => $request->name,
            "email" => $request->email,
            "password" => $request->password,
        ]);
        if($request->hasFile('avatar') && $request->file('avatar')->isValid()){
            $user->addMediaFromRequest('avatar')->toMediaCollection('avatar');
        }
        return redirect()->route('user.index');
    }
}

Adım 5: Bir Blade dosyası oluşturun

View dizininizde, create.blade.php ve index.blade.php adında 2 dosya oluşturun.

resources/views/user/index.blade.php dosyasına gidin ve aşağıdaki kod parçacığını ekleyin:

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Laravel'de Medya Yükleme</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="d-flex p-2 bd-highlight mb-3">
        <a href="{{ route('user.create') }}" class="btn btn-dark">Ekle</a>
    </div>
    <table class="table">
        <thead>
        <tr>
            <th>#</th>
            <th>İsim</th>
            <th>E-posta</th>
            <th width="30%">Avatar</th>
        </tr>
        </thead>
        <tbody>
        @foreach($users as $key=>$item)
        <tr>
            <td>{{ ++$key }}</td>
            <td>{{ $item->name }}</td>
            <td>{{ $item->email }}</td>
            <td><img src="{{$item->getFirstMediaUrl('avatar', 'thumb')}}" / width="120px"></td>
        </tr>
        @endforeach
        </tbody>
    </table>
</div>
</body>
</html>

resources/views/user/create.blade.php dosyasına gidin ve aşağıdaki kodu ekleyin:

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Laravel'de Medya Yükleme</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="col-6 m-auto">
        <div class="card ">
            <div class="card-header">
                <div class="d-flex p-2 bd-highlight mb-3 justify-content-between">
                    <h4 class="card-title m-0">Kullanıcı Oluştur</h4>
                    <a href="{{ route('user.index') }}" class="btn btn-outline-danger btn-sm h-auto">Geri Git</a>
                </div>
            </div>
            <div class="card-body">
                <form action="{{ route('user.store') }}" enctype="multipart/form-data" method="post">
                    @csrf
                    <div class="mb-3">
                        <label>İsim</label>
                        <input type="text" name="name" class="form-control">
                    </div>
                    <div class="mb-3">
                        <label>E-posta</label>
                        <input type="email" name="email" class="form-control">
                    </div>
                    <div class="mb-3">
                        <label>Şifre</label>
                        <input type="password"

                               name="password" class="form-control">
                    </div>
                    <div class="mb-3">
                        <label>Avatar:</label>
                        <input type="file" name="avatar" class="form-control">
                    </div>
                    <div class="d-grid">
                        <button class="btn btn-primary">Kaydet</button>
                    </div>
                </form>
            </div>
        </div>
    </div>
</div>
</body>

</html>

Adım 6: Çalıştırın

Şimdi aşağıdaki komutları çalıştırarak uygulamayı başlatın:

$ php artisan co:ca
$ php artisan ro:ca
$ php artisan serve

Laravel'de Resim Yükleme

Sonuç:

İşte bu kadar! Bir Laravel uygulamasında resim yükleme işlemini başarıyla uyguladınız. Kullanıcılar artık resim yükleyebilir ve ihtiyacınıza göre bunları görüntüleyebilirsiniz.