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 FileBelow 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");
});
.png)
.png)
.png)
Comments
Post a Comment