Bu örnekte, Laravel 10'da resim yükleme işleminin nasıl yapıldığını anlatacağım. Bu yazı, Laravel 10'da resim yükleme işleminin basit bir örneğini sunacak. Laravel 10'da resim yüklemek için veritabanına yükleme yapacağız. Adım adım, Laravel 10'da resim yükleme ve görüntüleme işlemini açıklayacağım.
Bu öğreticide, iki tane route oluşturacağız. Bir tanesi formu görüntülemek için get metodu için, diğeri ise resim yükleme kodu için post metodu için olacak. Basit bir dosya girişi olan bir form oluşturduk. Yani sadece bir resim seçmeniz ve ardından public klasöründeki "images" dizinine yükleyecektir.
Aşağıdaki adımları takip ederek Laravel 10 uygulamasında resim yükleme işlemini gerçekleştirebilirsiniz.
Adım 1: Laravel 10 Uygulamasını Kurun
Eğer henüz bir Laravel uygulaması oluşturmadıysanız aşağıdaki komutu kullanarak bir Laravel 10 uygulaması oluşturabilirsiniz:
composer create-project laravel/laravel example-app
Adım 2: Controller Oluşturun
Bu adımda, ImageController adında bir controller oluşturacağız. Bu controller içinde index() ve store() olmak üzere iki yöntem ekleyeceğiz.
php artisan make:controller ImageController
Sonrasında oluşan ImageController.php dosyasını aşağıdaki şekilde güncelleyin:
app/Http/Controllers/ImageController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\View\View;
use Illuminate\Http\RedirectResponse;
class ImageController extends Controller
{
public function index(): View
{
return view('imageUpload');
}
public function store(Request $request): RedirectResponse
{
$request->validate([
'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);
$imageName = time().'.'.$request->image->extension();
$request->image->move(public_path('images'), $imageName);
/*
Veritabanına $imageName adını burada kaydedin
*/
return back()
->with('success', 'Resim başarıyla yüklendi.')
->with('image', $imageName);
}
}
Adım 3: Rotaları Oluşturun
Daha sonra routes/web.php dosyasını açın ve aşağıdaki kodu ekleyerek GET ve POST isteklerini yönetecek rotaları oluşturun:
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ImageController;
Route::controller(ImageController::class)->group(function(){
Route::get('image-upload', 'index');
Route::post('image-upload', 'store')->name('image.store');
});
Adım 4: Blade Şablonu Oluşturun
Son adımda resources/views dizinine imageUpload.blade.php adında bir Blade şablon dosyası oluşturun. İçeriği aşağıdaki gibi olsun:
<!DOCTYPE html>
<html>
<head>
<title>Laravel 10 Resim 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 Resim Yükleme Örneği</h2>
</div>
<div class="panel-body">
@if ($message = Session::get('success'))
<div class="alert alert-success alert-block">
<button type="button" class="close" data-dismiss="alert">×</button>
<strong>{{ $message }}</strong>
</div>
<img src="images/{{ Session::get('image') }}">
@endif
<form action="{{ route('image.store') }}" method="POST" enctype="multipart/form-data">
@csrf
<div class="mb-3">
<label class="form-label" for="inputImage">Resim:</label>
<input
type="file"
name="image"
id="inputImage"
class="form-control @error('image') is-invalid @enderror">
@error('image')
<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>
Bu şekilde imageUpload.blade.php dosyasını düzgün bir şekilde oluşturmuş olursunuz.
Laravel Uygulamasını Çalıştırın
Gerekli adımlar tamamlandıktan sonra aşağıdaki komutu çalıştırarak Laravel uygulamanızı başlatabilirsiniz:
php artisan serve
Web tarayıcınıza aşağıdaki URL'yi girerek uygulamanın çıktısını görebilirsiniz:
http://localhost:8000/image-upload
Bu şekilde Laravel 10 uygulamanızda resim yükleyebilir ve görüntüleyebilirsiniz.
