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.
