Upload multiple files and save data in database tutorial in laravel 11

 <?php


namespace App\Http\Controllers;

use App\Models\Image;
use Illuminate\Http\Request;

class FileController extends Controller
{
    public function fileUpload(Request $request)
    {
        $fileNames = [];
        foreach ($request->file("file") as $image) {
            $imageName = $image->getClientOriginalName();
            $image->move(public_path() . "/images/", $imageName);
            $fileNames[] = $imageName;
        }

        $images = json_encode($fileNames);
        Image::create([
            "images" => $images
        ]);
        return back();
    }
}
Above File is app\Http\Controllers\FileController.php File





Below File is app\Models\Image.php File
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Image extends Model
{
    public $timestamps = true;
    protected $table = "images";
    protected $fillable = ["images"];
}






Below File is database\migrations\2025_01_09_041516_create_images_table.php File
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    /**
     * Run the migrations.
     */
    public function up(): void
    {
        Schema::create('images', function (Blueprint $table) {
            $table->id();
            $table->string("images");
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::dropIfExists('images');
    }
};






Below File is resources\views\files.blade.php File
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Files</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
</head>
<body>
    <div class="container">
        <div class="row justify-content-center">
            <div class="col-10">
                <div class="card">
                    <div class="card-header">
                        <h3>Images</h3>
                    </div>
                    <div class="card-body">
                        <form action="" method="POST" enctype="multipart/form-data">
                            @csrf
                            <input type="file" name="file[]" multiple="multiple"/><br><br>
                            <input type="submit">
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>






Below File is routes\web.php File
<?php

use App\Http\Controllers\FileController;
use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    return view('welcome');
});

Route::get("/file", function () {
    return view("files");
});

Route::controller(FileController::class)->group(function () {
    Route::post("/file", "fileUpload")->name("fileUpload");
});




Comments

Popular posts from this blog

Eloquent Many to Many Relationship Tutorial in Laravel 11

Blade Template Tutorial Three Template Inheritance in Laravel 11